相关列表与字典习题
1.判断季节
# 接收用户输入的月份
month = int(input('month:'))
# 定义列表
spring = [3,4,5]
summer = [6,7,8]
autumn = [9,10,11]
winter = [12,1,2]
# 判断输入的月份属于哪个季节
# 列表的特性:成员操作符
if month in spring:
print('%s月是春天' %(month))
elif month in summer:
print('%s月是夏天' %(month))
elif month in autumn:
print('%s月是秋天' %(month))
elif month in winter:
print('%s月是冬天' % (month))
else:
print('请输入正确的月份')
2.按要求重组列表元素
- 假定有下面的列表:
names = [‘fentiao’,‘fendai’,‘fensi’,‘apple’]
输出结果为:‘I have fentiao, fendai, fensi and apple.’
# 定义列表
names = ['fentiao','fendai','fensi','apple']
# + 和 join 都表示连接,(join可以指定分隔符连接);
# 列表的索引和切片都相当于分离
print('I have ' + ','.join(names[:3]) + ' and ' + (names[3]))
3.编写小学生算术能力测试系统
- 设计一个程序,用来实现帮助小学生进行百以内的算术练习,它具有以下功能:
- 提供10道加、减、乘或除四种基本算术运算的题目;
- 练习者根据显示的题目输入自己的答案,程序自动判断输入的答案是否
- 正确并显示出相应的信息。
import random
# 定义用来记录总的答题数目和回答正确的数目
count = 0
right = 0
# 因为题目要求:提供10道题目(因为题目要求:提供10道题目)
while count <= 10:
# 创建列表,用来记录加减乘除四大运算符
op = ['+', '-', '*', '/']
# 随机生成op列表中的字符
s = random.choice(op)
# 随机生成0-100以内的数字
a = random.randint(0,100)
# 除数不能为0
b = random.randint(1,100)
print('%d %s %d = ' %(a,s,b))
# 默认输入的为字符串类型
question = input('请输入您的答案:(q退出)')
# 判断随机生成的运算符,并计算正确结果
if s == '+':
result = a + b
elif s == '-':
result = a - b
elif s == '*':
result = a * b
else:
result = a / b
# 判断用户输入的结果是否正确,str表示强制转换为字符串类型
if question == str(result):
print('回答正确')
right += 1
count += 1
elif question == 'q':
break
else:
print('回答错误')
count+=1
# 计算正确率
if count == 0:
percent = 0
else:
percent = right / count
print('测试结束,共回答%d道题,回答正确个数为%d,正确率为%.2f%%' %(count,right,percent*100))
4.编写用户登陆系统
- 1.系统里面有多个用户,用户的信息目前保存在列表里面
users = [‘root’,‘westos’]
passwd = [‘123’,‘456’] - 2.用户登陆(判断用户登陆是否成功)
1).判断用户是否存在
2).如果存在
1).判断用户密码是否正确
如果正确,登陆成功,推出循环
如果密码不正确,重新登陆,总共有三次机会登陆
3).如果用户不存在
重新登陆,总共有三次机会
# 定义列表,用来记录用户名和密码
users = ['root','westos']
passwds = ['123','456']
# 定义尝试登陆的次数
trycount = 0
# 判断尝试登陆次数是否超过3次
while trycount < 3:
# 接收用户输入的用户名和密码
inuser = input("用户名:")
inpasswd = input("密码:")
trycount+=1
# 判断用户是否存在
if inuser in users:
# 先找出用户对应的索引值
index = users.index(inuser)
# 找出密码列表中对应的索引值的密码
passwd = passwds[index]
# 判断输入的密码是否正确
if inpasswd == passwd:
print("%s登陆成功" % (inuser))
break
else:
print("%s登陆失败: 密码错误!" % (inuser))
else:
print("用户%s不存在" % (inuser))
else:
print("已经超过三次机会")
5.后台管理员管理前台会员信息系统
- 后台管理员管理前台会员信息系统:
- 后台管理员只有一个用户: admin, 密码: admin
- 当管理员登陆成功后, 可以管理前台会员信息.
- 会员信息管理包含:
添加会员信息
删除会员信息
查看会员信息
退出
-
添加用户:
1). 判断用户是否存在?
2). 如果存在, 报错;
3). 如果不存在,添加用户名和密码分别到列表中; -
删除用户
1). 判断用户名是否存在
2). 如果存在,删除;
3). 如果不存在, 报错;
print('管理员登陆界面'.center(50,'*'))
# 初始会员信息
users = ['westos','linux']
passwds = ['123','234']
# 接收用户输入的用户名和密码
inuser = input("用户名:")
inpasswd = input("密码:")
if inuser == 'admin':
if inpasswd == 'admin':
print("管理员%s登陆成功" % (inuser))
while True:
print("""
**********操作目录**********
1.添加会员信息
2.删除会员信息
3.查看会员信息
4.退出
""")
option = input('请输入你想执行的操作:')
if option == '1':
print('添加会员信息'.center(50,'*'))
adduser = input('用户名:')
addpasswd = input('密码:')
if adduser in users:
print('添加失败,该会员信息已经存在!')
else:
users.append(adduser)
passwds.append(addpasswd)
print('添加信息成功!')
elif option == '2':
print('删除会员信息'.center(50,'*'))
deluser = input('用户名:')
if deluser not in users:
print('删除失败,该会员信息不存在!')
else:
# 找出想删除的用户对应的索引值
delindex = users.index(deluser)
# 删除用户,remove表示删除列表中的元素
users.remove(deluser)
# 按照索引值删除密码,pop也表示删除列表中的元素,区别在于,它可以按索引值来删除
passwds.pop(delindex)
print('删除信息成功!')
elif option == '3':
print('查看会员信息'.center(50,'*'))
# 记录users列表的长度(即列表中元素的个数)
count = len(users)
for i in range(0,count):
print('用户名: %s 密码: %s' %(users[i],passwds[i]))
elif option == '4':
exit()
else:
print('请输入正确的操作指令')
else:
print("%s登陆失败: 密码错误!" % (inuser))
else:
print("用户%s不存在" % (inuser))
6.输出商品列表,用户输入序号,显示用户选中的商品。
- 商品li=[“手机”, “电脑”, “鼠标垫”, “游艇” ]
- a. 允许用户添加商品
- b. 用户输入序号显示内容
goods = ["手机", "电脑", "鼠标垫", "游艇" ]
add_good = input("请输入您想加入的商品:")
goods.append(add_good)
print("商品现有",goods)
num = int(input("请输入序号:"))
print(goods[num])
7.有两个列表
- l1 = [11, 22, 33]
- l2 = [22, 33, 44]
- a.获取内容相同的元素列表
l1 = [11, 22, 33]
l2 = [22, 33, 44]
for i1 in l1:
for i2 in l2:
if i1 == i2:
print(i1)
- b.获取l1中有,l2中没有的元素列表
l1 = [11, 22, 33]
l2 = [22, 33, 44]
for i1 in l1:
if i1 not in l2:
print(i1)
- c. 获取l1 和 l2 中内容都不同的元素
l1 = [11, 22, 33]
l2 = [22, 33, 44]
for i2 in l2:
if i2 not in l1:
print(i2)
for i1 in l1:
if i1 not in l2:
print(i1)
8. for循环从大到小输出1-100
for i in range(100, 0, -1):
print(i, end = " ")
9.元素分类
- 有如下值集合[0,11,22,33,44,55,66,77,88,99,100], 将所有大于66的值保存至字典的第一个key中,将小于66值保存至第二个key的值中。
li = [0,11,22,33,44,55,66,77,88,99,100]
dic = {}
n = []
m = []
for i in li:
if i > 66:
n.append(i)
if i < 66:
m.append(i)
dic.update(k1 = m, k2 = n)
print(dic)
10.购物车
- 功能要求:
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车购买,如果商品总额大于总资产,提示余额不足,否则,购买成功。
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 40},
{"name": "游艇", "price": 20000},
]
ass = int(input("请输入你的总资产:"))
dic = {}
num =1
for good in goods:
name = good["name"]
dic.update({num : name})
num +=1
print(dic)
money = 0
while True:
want = int(input("请输入你想要的商品序号(按数字0结束)"))
if want == 0:
break
if want > 4:
print("请重新输入")
continue
v = dic.get(want)
print("你想要购买的是:", v)
price_list = [0,1999, 40, 20000]
print("它的价格为:%d"%price_list[want])
p = int(price_list[want])
money = money + p
print('您需要支付money元',money)
if money > ass:
print("余额不足请充值")
else:
print("购买成功!")
##越努力越幸运!!!