python之错题巩固

1.#把班级学⽣数学考试成绩录⼊到⼀个列表中: 并求平均值. 要求: 录⼊的时候
# 要带着⼈名录⼊, 例如: 张三_44
li = []
while 1:
    str_input = input('请输入你的姓名和分数(格式:张三_44),输入Q退出:')
    if str_input.lower() == 'q':
        break
    else:
        ret = str_input.split('_')
        li.append(ret[1])
sum_num = 0
for i in li:
    sum_num = sum_num + int(i)
print(sum_num / len(li))
#2.编写程序. 完成⼼动⼥⽣的筛选. (升级题)
# ⾸先. 程序会提示⽤户录⼊10位⼼仪⼥⽣的姓名. 然后把10位⼥⽣的名
# 字和序号展示出来. 由⽤户选择⼼动⼥⽣. 此时⽤户可以选择3个⼼动⼥⽣. 把⽤
# 户选中的三个⼼动⼥⽣的名字打印出来. 供⽤户继续选择. 这⼀次选择. 只能选
# 择⼀名⼥⽣. 然后输出⽤户的⼼动⼥⽣是xxx
str = []
num = 1
while num <= 10:
    name = input("请输入10位心动女生的姓名(您还可以输入{}个):".format(11-num))
    num += 1
    str.append(name)  #10个女生名字依次追加到str列表中
print("您当前心仪的女生有:")
# print(str)
for i in range(len(str)):
    print('编号:{},名字:{}'.format((i+1),str[i]))
print("请输入你更喜欢的三个女人的编号:")
j = 1
str_bh = []
while j <= 3:
    bh = input("请输入第{}个美眉的编号:".format(j))
    j += 1
    str_bh.append(bh)
# print(str_bh)
str_last = []
print("更喜欢的新鲜出炉:")
for n in range(len(str_bh)):
    print("编号:{},名字:{}".format((n+1),str[int(str_bh[n])-1]))
    str_last.append(str[int(str_bh[n])-1])
# print(str_last)
print("最后了,三选一")
last_bh = int(input("输入你最喜欢的人的编号:"))
print("程序帮你选出来了,你最喜欢的是{}妹子".format(str_last[last_bh - 1]))
#3 有如下列表
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
# 循环打印列表中的每个元素,遇到列表则再循环打印出它⾥⾯的元素。
# 我想要的结果是:
# 1
# 3
# 4
# "alex"
# 3
# 7,
# 8
# "taibai"
# 5
# ritian
# li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
li = [1, 3, 4, "alex", [3, 7, 8, "TaiBai"], 5, "RiTiAn"]
for i in li:
    if type(i) == list:
        for el in i:
            if type(el) == str:
                print(el.lower())
            else:
                print(el)
    else:
        if type(i) == str:
            print(i.lower())
        else:
            print(i)
#4.车牌区域划分, 现给出以下车牌.
#  根据车牌的信息, 分析出各省的车牌持有量. (升级题)
cars = ["鲁A12345","鲁B12345", "沪B45678", "黑A12345", "黑A12345"]
locals = {"": "山东", "": '上海', "": '黑龙江'}
result = {}
for car in cars:
    result[locals[car[0]]]=result.get(locals[car[0]],0)+1
print(result)
# 5有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
s1='k:1|k1:2|k2:3|k3:4'
disc={}                                          
s2=s1.split('|')
print(s2)    # s2=['k:1','k1:2','k2:3','k3:4']
for n in s2:  # n='k:1'第一次循环后的结果
    n1= n.split(":")  # n1=['k' ,'1']
    # disc.setdefault(n1[0], n1[1])   #setdefault:如果键不存在于字典中,将会添加键并将值设为默认值。
    disc[n1[0]]=n1[1]
print(disc)
#6.完成彩票36选7的功能. 从36个数中随机的产生7个数.
# 最终获取到7个不重复的数据作为最终的开奖结果.
# 随机数:
from random import randint
#  # 0 - 36 的随机数
lst=[]
while 1:
    a=randint(1,36)
    if len(lst)<7:
        lst.append(a)
        print(a)
    else:
        break
        s=set(lst)
        set=list(s)
print(lst)
#7.判断一个数是否是水仙花数, 水仙花数是一个三位数,
# 三位数的每一位的三次方的和还等于这个数. 那这个数就是一个水仙花数,
# 例如: 153 = 1**3 + 5**3 + 3**3
while 1:
    s = input("请输入一个数字:"  )
    if 99 <int(s) <1000:
        print("这个数字是三位数")
        sum = 0  #
        for i in s:
            print(i)  # '1','2','3',
            sum = sum + int(i) ** 3
        if sum == int(s):
            print("%s是水仙花数" % s)
        print(s)
    else:
        print("您输入有误")
    break
#7,文件a1.txt内容(升级题)
# 序号     部门      人数      平均年龄      备注
# 1       python    30         26         单身狗
# 2       Linux     26         30         没对象
# 3       运营部     20         24         女生多
# .......
# 通过代码,将其构建成这种数据类型:
# [{'序号':'1','部门':Python,'人数':30,'平均年龄':26,'备注':'单身狗'},
# # ......]
lst = []
with open("a6.txt",mode="r",encoding="utf-8") as f1:
    first = f1.readline().split()
# print(first)  #['序号', '部门', '人数', '平均年龄', '备注']
    for line in f1:
        dic = {}
        ls = line.split()  #['1', 'python', '30', '26', '单身狗']
        for i in range(len(first)):
            dic[first[i]] = ls[i]
        lst.append(dic)
print(lst)

 

posted @ 2018-08-12 15:24  卍风衍  阅读(294)  评论(0编辑  收藏  举报