python练习题-day9
2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def dan_index(itter):
li=[]
for i in range(len(itter)):
if i%2==1:
li.append(itter[i])
return li
3、写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def len_itter(itt):
count=0
for i in itt:
count+=1
if count>5:
return "{}长度大于5".format(itt)
else:
return "%s 长度小于5"%itt
print(len_itter([3489,34,"hello","myfu","good",78]))
4、写函数,检查传入列表的长度,如果大于2,将列表的前两项内容返回给调用者。
def it_len(itt):
if len(itt)>2:
return itt[:2]
5、写函数,计算传入函数的字符串中, 数字、字母、空格 以及 其他内容的个数,并返回结果。
def str_count(st):
s=0
b=0
n=0
for i in st:
if i.isdigit():
n+=1
if i.isalpha():
s+=1
if i.isspace():
b+=1
return "%s有%s个数字%s字母%s空格"%(st,n,s,b)
6、写函数,接收两个数字参数,返回比较大的那个数字。
def num_cam(a,b):
if a>b:
return a
else:
return b
7、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
PS:字典中的value只能是字符串或列表
def dic_filter(dic):
for i,j in dic.items():
if len(j)>2:
j=j[:2]
dic.update({i:j})
return dic
print(dic_filter( {"k1": "v1v1", "k2": [11,22,33,44]}))
8、写函数,此函数只接收一个参数且此参数必须是列表数据类型,此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字典为 {0:11,1:22,2:33}。
#方法一
def list_trans(li):
dic={}
for i,j in enumerate(li):
dic.setdefault(i,j)
return dic
print(list_trans([11,22,33]))
#方法二
def list_trans(li):
dic={}
for i in range(len(li)):
dic.setdefault(i,li[i])
return dic
print(list_trans([11,22,33]))
9、写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数接收到这四个内容,将内容追加到一个student_msg文件中。
def stu_add(name,gender,age,education):
with open("stu_info.txt","r+",encoding="utf-8") as f2:
data=f2.readline()
f2.write("\n%s %s %s %s"%(name,gender,age,education))
10、对第9题升级:支持用户持续输入,Q或者q退出,性别默认为男,如果遇到女学生,则把性别输入女。
def stu_add():
with open ("stu_info.txt","r+",encoding="utf-8") as f1:
while True:
stu_add=input("请输入用户信息(以空格隔开q或Q退出):").strip()
if len(stu_add.split())==3:
name,age,education=stu_add.split()
f1.read()
f1.write("\n%s male %s %s"%(name,age,education))
continue
if len(stu_add.split())==4:
name,gender,age,education=stu_add.split()
f1.read()
f1.write("\n%s %s %s %s"%(name,gender,age,education))
continue
if stu_add.upper()=="Q":
exit("谢谢使用,正在退出")
11、写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作(升级题)。
def file_modify(filename,contant):
import os
contant_new = input("请输入修改后的内容:")
with open(filename,encoding="utf-8")as f1,open("filename_new","w",encoding="utf-8") as f2:
for i in f1:
new_i=i.replace(contant,contant_new)
f2.write(new_i)
os.remove(filename)
os.rename("filename_new",filename)
12、写一个函数完成三次登陆功能,再写一个函数完成注册功能(升级题)
def user_register():
while True:
uname=input("请输入注册名:")
pwd=input("请输入注册密码:")
pwd_2=input("请确认密码:")
li=[]
with open("info_database","r+",encoding="utf-8") as f1:
data=f1.read()
data_dic=eval(data)
for i in data_dic.keys():
li.append(i)
if uname in li:
print("用户名已存在,请重新输入")
continue
if pwd==pwd_2:
print("注册成功")
data_dic.setdefault(uname,pwd)
f1.seek(0)
f1.write(str(data_dic))
break
else:
print("密码不一致请重新输入")
continue
def login():
count=0
while count<3:
username=input("请输入用户名:").strip()
password=input("请输入密码:").strip()
with open("info_database",encoding="utf-8")as f2:
data=f2.read()
dic_data=eval(data)
for i in dic_data.keys():
if username==i and password==dic_data[i]:
print("登录成功")
exit()
else:
print("用户名或密码有误还有%s次机会"%(2-count))
count+=1
python练习题-day9的更多相关文章
- Python练习题 028:求3*3矩阵对角线数字之和
[Python练习题 028] 求一个3*3矩阵对角线元素之和 ----------------------------------------------------- 这题解倒是解出来了,但总觉得 ...
- Python练习题 027:对10个数字进行排序
[Python练习题 027] 对10个数字进行排序 --------------------------------------------- 这题没什么好说的,用 str.split(' ') 获 ...
- Python练习题 026:求100以内的素数
[Python练习题 026] 求100以内的素数. ------------------------------------------------- 奇怪,求解素数的题,之前不是做过了吗?难道是想 ...
- Python练习题 025:判断回文数
[Python练习题 025] 一个5位数,判断它是不是回文数.即12321是回文数,个位与万位相同,十位与千位相同. ---------------------------------------- ...
- Python练习题 024:求位数及逆序打印
[Python练习题 024] 给一个不多于5位的正整数,要求:一.求它是几位数,二.逆序打印出各位数字. ---------------------------------------------- ...
- Python练习题 004:判断某日期是该年的第几天
[Python练习题 004]输入某年某月某日,判断这一天是这一年的第几天? ---------------------------------------------- 这题竟然写了 28 行代码! ...
- Python练习题-1.使用匿名函数对1~1000求和,代码力求简洁。
Python 练习 标签(空格分隔): Python Python练习题 Python知识点 一.使用匿名函数对1~1000求和,代码力求简洁. 答案: In [1]: from functools ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- python 基础 2.8 python练习题
python 练习题: #/usr/bin/python #coding=utf-8 #@Time :2017/10/26 9:38 #@Auther :liuzhenchuan #@File ...
随机推荐
- mysql存储过程详解 mysql存储过程和函数
第20章:存储程序和函数 目录 20.1. 存储程序和授权表 20.2. 存储程序的语法 20.2.1. CREATE PROCEDURE和CREATE FUNCTION 20.2.2. ALTER ...
- mysql 按照月份自动创建表,以年和月为表明,动态生成。
需求:mysql5.5 数据库,想要根据月份自动创建表,每个月创建一张表,需要数据库自动创建,并根据当前年和月动态生成表名称. 解决办法:1 连接数据库工具为Navicat 2 首先创建存储过程, ...
- Oracle 11gR2 RAC DBCA无法识别ASM磁盘组(ORA-19504,ORA-15045,ORA-17502,ORA-15081)
ORA-19504: failed to create file "+DATA" ORA-15045: ASM file name '+DATA' is not in refere ...
- 【iCore4 双核心板_ARM】例程三十八:DSP MATH库测试
实验现象: 核心代码: int main(void) { /* USER CODE BEGIN 1 */ int i,j; int res; ]; ; /* USER CODE END 1 */ /* ...
- JDK 自带的观察者模式源码分析以及和自定义实现的取舍
前言 总的结论就是:不推荐使用JDK自带的观察者API,而是自定义实现,但是可以借鉴其好的思想. java.util.Observer 接口源码分析 该接口十分简单,是各个观察者需要实现的接口 pac ...
- golang 中的指针
# golang 中的指针 看了一篇[文章](http://blog.51cto.com/steed/2341409),写的很好.这里略微总结下重点: 1. 地址值.unsafe.Pointer.ui ...
- 干货 | Ansible 上手指南
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/O4dC8OjO7ZL6/article/details/79765539 点击上方"中兴开 ...
- JS精准倒计时(支持自定义模板)
/** * 倒计时 Create By TuJia @2017.10.17 * 使用方法: * leftTimer.run(container[,theme][,callback]); * * 支持 ...
- JavaScript Practices
不定时更新:https://github.com/zhengyeye/JS-practices Day1:关于创建对象的几种方式: Day3:原型 早前一篇:https://www.cnblogs.c ...
- 没钱买windows怎么办?
ReactOS是一个与 Windows 环境二进制兼容的操作系统. 同时,他是一款开源.免费的操作系统.