本文是零基础刚接触Python的,最最基础练习,不包含函数和面向对象。
都是本人在网上收集的一些练习题资料,废话不多上题
【题】用三行print,完成以下信息的显示:
==================================
= 欢迎进入到身份认证系统V1.0
= 1. 登录
= 2. 退出
= 3. 认证
= 4. 修改密码
==================================
print("="*50) print("=\t欢迎进入到身份认证系统V1.0\n= 1.登录\n= 2.退出\n= 3.认证\n= 4.修改密码") print("="*50)
【题】编写程序,从键盘获取一个个信息,然后按照下面格式显示
==================================
姓名: dongGe
QQ:xxxxxxx
手机号:131xxxxxx
公司地址:北京市xxxx
==================================
name = input(">>> ") QQ = input(">>> ") phone_num = input(">>> ") com_addr = input(">>> ") print("="*30) print("\n姓名:%s\n\nQQ:%s\n\n手机号:%s\n\n公司地址:%s\n"%(name,QQ,phone_num,com_addr)) print("="*30)
【题】编写程序
- 从键盘获取用户名、密码
- 如果用户名和密码都正确(预先设定一个用户名和密码),那么就显示“欢迎登陆xxx”,否则提示密码或者用户名错误
1 r_username = "wowowo" 2 r_passwd = "password" 3 4 username = input(">>> ") 5 passwd = input(">>> ") 6 7 if username == r_username and passwd == r_passwd: 8 print("欢迎登陆%s"%username) 9 else: 10 print("输入有误")
【题】请编写1 - 100 所有数的和
1 x = 0 2 for i in range(1,101): 3 x += i 4 print(x)
【题】实现一个整数加法计算器
如 content = input(">>> ") # 5+9 , 6+4
1 qwe = input(">>") 2 print(qwe.split("+")) 3 a, b = qwe.split("+") 4 a = int(a) 5 b = int(b) 6 print(a+b)
【题】有如下值集合[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存至字典的第一个key中,将小于66的值保存至第二个key的值中。
即:{'k1':大于66的所有值,'k2':小于66的所有值}
1 li = [11,22,33,44,55,66,77,88,99,90] 2 3 li.sort() 4 z = li.index(66) 5 dic = {"key2":li[0:z],"key1":li[z+1:]} 6 7 print(dic)
【题】编写代码,有如下数字
- li = [1,2,3,4,5,6,7,8,8]
- 能组成多少个互不相同且不重复的数字的两位数
1 li = [1,2,3,4,5,6,7,8,8] 2 li2 = [] 3 li3 = [] 4 for i in li: 5 for x in li: 6 if i != x: 7 a = "%d%d" % (i,x) 8 li2.append(a) 9 for y in li2: 10 if y not in li3: 11 li3.append(y) 12 print(li3) 13 print(len(li3))
【题】输出商品列表,用户输入序号,显示用户选中的商品
商品 商品li=["电脑","显示器",“笔记本”,“机械键盘”]
a.允许用户添加商品
b.用户输入序号显示内容
1 li = ["手机", "电脑", '鼠标垫', '游艇'] 2 3 for i, v in enumerate(li, 1): 4 print(i, v) 5 print("==请输入要添加的商品==") 6 add_mar = input(">>> ") 7 li.append(add_mar) 8 print("==添加成功==") 9 for i, v in enumerate(li, 1): 10 print(i, v) 11 print("==请输入要查找的序号==") 12 cho_num = input(">>> ") 13 if cho_num.isdecimal(): 14 cho_num = int(cho_num) 15 print(li[cho_num-1]) 16 else: 17 print("==输入有误重新输入==")
【题】编写代码,实现一个判断用户输入的年份是否是闰年的程序
1 while True: 2 year = int(input(">>> ")) 3 if year % 400 == 0 or year % 4 == 0 and year % 100 != 0: 4 print("yeah it is runnian") 5 else: 6 print("not runnian")
【题】编写代码,实现输入某年某月某日,判断这一天是这一年的第几天?闰年情况也考虑进去
1 print("==== please ouput in this format 'year/month/day' ====") 2 all_day = 0 3 while True: 4 month = [31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] 5 year = input(">>> ") 6 y, m, d = year.split("/") 7 y = int(y) 8 m = int(m) 9 d = int(d) 10 if y % 400 == 0 or y % 4 == 0 and y % 100 != 0: 11 month[1] = 28 12 if m > 0 and m < 12: 13 if d > 0 and d < month[m-1]: 14 for i in month[0:m - 1]: 15 all_day += i 16 all_day = all_day + d 17 else: 18 print("超出范围请重试") 19 else: 20 print("超出范围请重试") 21 break 22 else: 23 if m > 0 and m < 12: 24 if d > 0 and d < month[m-1]: 25 for i in month[0:m - 1]: 26 all_day += i 27 all_day = all_day + d 28 else: 29 print("超出范围请重试") 30 else: 31 print("超出范围请重试") 32 break 33 print("这是%s的第%s天"%(y,all_day))
【题】实计算用户输入的内容中有几个十进制小数?几个字母?
1 content = input(">>> ") 2 d = 0 3 a = 0 4 for i in content: 5 if i.isdecimal(): 6 d += 1 7 elif i.isalpha(): 8 a += 1 9 print("字符串个数是:%s 十进制小数是:%s"%(a,d))
【题】编写程序,统计如下各个字符串个数
- string = "hello world god is allways busy"
- 比如:"hello world" 字符串统计的结果为: h:1 e:1 l:3 o:2 d:1 r:1 w:1
1 q = "hello world god is allways busy" 2 l = "" 3 for i in "".join(q.split()): 4 if i + ":" + str(q.count(i)) not in l: 5 l += (i + ":" + str(q.count(i)) + " ") 6 # v.append(str(q.count(i))) 7 print(l)
【题】编写9*9乘法表
1 for i in range(1,10): 2 for x in range(1,i+1): 3 print("%d * %d = %d\t"%(x,i,i*x),end="") 4 print("")
【题】编写代码,实现求100-200里面所有的素数
1 a = [] 2 for i in range(100,201): 3 count = 0 4 for x in range(2,i-1): 5 if i % x == 0: 6 count += 1 7 if count == 0: 8 a.append(i) 9 print(a)
【题】 使用while,完成以下图形的输出
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
1 i = 1 2 x = 4 3 while i <= 9: 4 if i <= 5: 5 print("*" * i) 6 elif i > 5: 7 print("*" * x) 8 x -= 1 9 i += 1
【题】 使用while,再完成以下图形的输出
*
***
*****
*******
*********
*******
*****
***
*
1 i = 1 2 x = 4 3 while i <= 9: 4 if i <= 5: 5 print(" " * x + "*" * i + "*" * (i - 1)) 6 elif i > 5: 7 print(" " * (i - 5) + "*" * (x + 5) + "*" * (x + 4)) 8 x -= 1 9 i += 1
【题】 编写代码,分页显示内容
- 通过for循环,创建301条数据,数据类型不限,如:
-
[email protected]
[email protected]
[email protected]
[email protected]
[email protected] - 提示用户输入要查看的页码,当用户输入指定的页码,则显示指定数据
- 每页显示10条数据
- 如果用户输入页码是非十进制数字,则提示内容格式错误,重新输入
1 li = [] 2 for i in range(311): 3 li.append("alex-%dalex%[email protected]%d" % (i + 1, i + 1, i + 1)) 4 print(li) 5 print(len(li) // 10) 6 print("请输入页数") 7 page_num = input(">>> ") 8 if page_num.isdecimal(): 9 page_num = int(page_num) 10 if page_num > 0 and page_num <= len(li) // 10 + 1: 11 for x in li[(page_num - 1) * 10:page_num * 10]: 12 print(x) 13 else: 14 print("输入超出范围") 15 else: 16 print("输入有误请重新输入")
【题】 有如下列表,
nums=[2,7,11,15,1,8,7]
请找到列表中任意两个元素相加能够等于9的元素集合,列[(2,7), (1,8)]
1 nums=[2,7,11,15,1,8,7] 2 li = [] 3 for i in nums: 4 for x in nums: 5 if i + x == 9: 6 a = list((i, x)) 7 a.sort() 8 b = tuple(a) 9 if b not in li: 10 li.append(b) 11 print(li)
【题】 编写代码,计算以下要求
公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,其中 公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?
1 li = [] 2 for i in range(1, 100 // 5): 3 for x in range(1, 100 // 3): 4 for y in range(1, 100 * 3): 5 if i + x + y == 100 and i * 5 + x * 3 + y / 3 == 100: 6 print(i, x, y)
【题】 前些年北京地铁的练习题,我在这稍微改动下,条件不变,问题变
地铁交通价格调整为:6公里(含)内3元;6公里至12公里(含)4元;12公里至22公里(含)5元;22公里至32公里(含)6元;32公里以上部分,每增加1元可乘坐20公里。使用市政交通一卡通刷卡乘坐轨道交通,每自然月内每张卡支出累计满100元以后的乘次,价格给予8折优惠;满150元以后的乘次,价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。
要求:
假设每个月,小明都需要上20天班,每次上班需要来回1次,即每天需要乘坐2次同样路线的地铁;每月月初小明第一次刷公交卡时,扣款5元;编写程序,从键盘获取距离,帮小明计算,如果不使用市政交通一卡通的每月总费用,和使用市政交通一卡通的每月总费用
本题主要练习大量的if嵌套,以此来提升逻辑判断基础,先不考虑代码执行效率,我觉得有必要练习一把。
1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 while True: 5 day = 1 6 j = 1 7 money = 0 8 print("== 请输入距离 或 按'q'退出 ==") 9 distance = input(">>> ") # 设置距离 10 if distance.isdecimal(): 11 distance = int(distance) 12 if distance > 0: 13 print("\n== 是不是一卡通? 'y'是 'n'不是==") 14 yikatong = input(">>>[y/n] ") 15 if yikatong.lower() == "y": #把输入的字母变成小写 16 while day <= 20: 17 j = 1 18 while j <= 2: 19 if money < 100: 20 if distance <= 6: 21 money += 3 22 if distance > 6 and distance <= 12: 23 money += 4 24 if distance > 12 and distance <= 22: 25 money += 5 26 if distance > 22 and distance <= 32: 27 money += 6 28 if distance > 32: 29 money += ((distance - 33) // 20) + 6 + 1 30 elif money >= 100 and money < 150: 31 if distance <= 6: 32 money += 3 * 0.8 33 if distance > 6 and distance <= 12: 34 money += 4 * 0.8 35 if distance > 12 and distance <= 22: 36 money += 5 * 0.8 37 if distance > 22 and distance <= 32: 38 money += 6 * 0.8 39 if distance > 32: 40 money += (((distance - 33) // 20) + 6 + 1) * 0.8 41 elif money >= 150 and money < 400: 42 if distance <= 6: 43 money += 3 * 0.5 44 if distance > 6 and distance <= 12: 45 money += 4 * 0.5 46 if distance > 12 and distance <= 22: 47 money += 5 * 0.5 48 if distance > 22 and distance <= 32: 49 money += 6 * 0.5 50 if distance > 32: 51 money += (((distance - 33) // 20) + 6 + 1) * 0.5 52 elif money > 400: 53 if distance <= 6: 54 money += 3 55 if distance > 6 and distance <= 12: 56 money += 4 57 if distance > 12 and distance <= 22: 58 money += 5 59 if distance > 22 and distance <= 32: 60 money += 6 61 if distance > 32: 62 money += (((distance - 33) // 20) + 6 + 1) 63 j += 1 64 day += 1 65 money += 5 66 print("\n你的总花费为:%.4f元\n" % money) 67 elif yikatong.lower() == "n": #把输入的字母变成小写 68 while day <= 20: 69 j = 1 70 while j <= 2: 71 if distance <= 6: 72 money += 3 73 if distance > 6 and distance <= 12: 74 money += 4 75 if distance > 12 and distance <= 22: 76 money += 5 77 if distance > 22 and distance <= 32: 78 money += 6 79 if distance > 32: 80 money += ((distance - 33) // 20) + 6 + 1 81 j += 1 82 day += 1 83 money += 5 84 print("你的总花费为:%.4f元" % money) 85 else: 86 print("\nXX 输入有误请重新输入 XX") 87 else: 88 print("必须大于0,请从新输入") 89 elif distance.lower() == "q": 90 break 91 else: 92 print("必须是数字,而且大于0,请从新输入")
【题】 编写程序,完成“名片管理器”项目
- 需要完成的基本功能:
- 添加名片
- 删除名片
- 修改名片
- 查询名片
- 退出系统
- 程序运行后,除非选择退出系统,否则重复执行功能
1 # !/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 print("=" * 20) 5 print("==\t学生名片管理系统") 6 print("1:添加名片") 7 print("2:删除名片") 8 print("3:修改名片") 9 print("4:查找名片") 10 print("5:显示名片") 11 print("6:退出") 12 print("=" * 20) 13 all_li = [] 14 while True: 15 print("\n==请输入序号==") 16 first_num = input(">>> ") 17 if first_num.isdecimal(): 18 first_num = int(first_num) 19 if first_num == 1: 20 dic_one = {} 21 print("请输入要添加的名字") 22 name = input(">>> ") 23 print("请输入%s的年龄" % name ) 24 age = input(">>>") 25 print("请输入%s的学号" % name) 26 stu_num = input(">>> ") 27 print("请输入%s的微信" % name) 28 weixin = input(">>> ") 29 30 dic_one["name"] = name 31 dic_one["age"] = age 32 dic_one["stu_num"] = stu_num 33 dic_one["weixin"] = weixin 34 all_li.append(dic_one) 35 print("==添加成功==") 36 elif first_num == 2: 37 while True: 38 print("\n==请输入要删除的名字==") 39 del_name = input(">>> ") 40 count = 0 41 f = 0 42 for i in all_li: 43 count += 1 44 if i["name"] == del_name: 45 count -= 1 46 f = 1 47 break 48 if f == 0: 49 print("找不到你要找的名字,请重新输入") 50 continue 51 del all_li[count] 52 print("删除成功") 53 break 54 elif first_num == 3: 55 while True: 56 print("请输入要修改的名字") 57 mod_name = input(">>> ") 58 count = 0 59 f = 0 60 for i in all_li: 61 count += 1 62 if i["name"] == mod_name: 63 count -= 1 64 f = 1 65 if f == 0: 66 print("找不到你要找的名字,请重新输入") 67 continue 68 print("\n==名字已找到,想修改对应此名的哪项选项==") 69 print("1:名字 2:年龄 3:学号 4:微信") 70 while True: 71 print("== 请输入对应的序号 ==") 72 mod_num = input(">>> ") 73 if mod_num.isdecimal(): 74 mod_num = int(mod_num) 75 if mod_num == 1: 76 print("\n请输入你要修改的名字") 77 mod_name2 = input(">>> ") 78 all_li[count]["name"] = mod_name2 79 print("修改成功") 80 break 81 if mod_num == 2: 82 print("\n请输入%s的新年龄" % all_li[count]["name"]) 83 mod_age = input(">>> ") 84 all_li[count]["age"] = mod_age 85 print("修改成功") 86 break 87 if mod_num == 3: 88 print("\n请输入%s的新学号" % all_li[count]["name"]) 89 mod_stu_num = input(">>> ") 90 all_li[count]["stu_num"] = mod_stu_num 91 print("修改成功") 92 break 93 if mod_num == 3: 94 print("\n请输入%s的新微信" % all_li[count]["name"]) 95 mod_weixin = input(">>> ") 96 all_li[count]["weixin"] = mod_weixin 97 print("修改成功") 98 break 99 else: 100 print("输入有误,重新输入") 101 break 102 elif first_num == 4: 103 while True: 104 print("\n==请输入要查找的名字==") 105 c = 0 106 find_name = input(">>> ") 107 for i in all_li: 108 if i["name"] == find_name: 109 print("名字\t\t年龄\t\t学号\t\t微信") 110 print("%s\t\t%s\t\t%s\t\t%s"%(i["name"],i["age"],i["stu_num"],i["weixin"])) 111 else: 112 print("找不到你要找的名字请重新输入") 113 c = 1 114 if c == 1: 115 continue 116 break 117 elif first_num == 5: 118 result = "名字\t年龄\t学号\t微信" 119 print(result.expandtabs(20)) 120 for i in all_li: 121 result2 = "%s\t%s\t%s\t%s"%(i["name"],i["age"],i["stu_num"],i["weixin"]) 122 print(result2.expandtabs(20)) 123 elif first_num == 6: 124 break 125 else: 126 print("输入超出范围,请重新输入") 127 else: 128 print("输入有误,请重新输入")
【题】编写代码,用户交互显示类似省市县 N 级联动的选择
- 比如有如下形式的字典
-
city = {"北京": {"朝阳": ["望京", "大望路"], "昌平": ["沙河", "小昌平"]},
"延边": {"延吉": ["北大", "铁南"], "龙井": ["图们", "珲春"]},
"上海": {"新上海": ["浦东", "浦西"], "老上海": ["上海滩", "不夜城"]}}
- 完成以下要求:
- 允许用户增加内容
- 允许用户查看某一个级别的内容
- 即可查看内容也可修改内容
- 也可删除内容
- 每一级的循环嵌套必须包含返回上一层,也包含全部退出
1 city = {"北京": {"朝阳": ["望京", "大望路"], "昌平": ["沙河", "小昌平"]}, 2 "延边": {"延吉": ["北大", "铁南"], "龙井": ["图们", "珲春"]}, 3 "上海": {"新上海": ["浦东", "浦西"], "老上海": ["上海滩", "不夜城"]}} 4 5 while True: 6 p = 0 7 q = 0 8 print("\33[35;1m一级列表\33[1m".center(50,"=")) 9 for i,v in enumerate(city,1): 10 print(i,v) 11 print("添加请按\33[31;1m A\33[1m 、查看请按\33[31;1m 序号\33[1m 、退出请按\33[31;1m Q\33[1m") 12 init_cho = input(">>> ") 13 if init_cho.lower() == "q": 14 break 15 elif init_cho.isdecimal(): 16 init_cho = int(init_cho) 17 if init_cho > 0 and init_cho <= len(city): 18 while True: 19 first_li = [] 20 for i, v in enumerate(city, 1): 21 first_li.append(v) 22 print("删除\33[31;1m%s\33[1m请按\33[31;1m Y\33[1m 、修改请按\33[31;1m M\33[1m 、返回上一级请按\33[31;1m P\33[1m 、进入下一级请按\33[31;1m N\33[1m 、全部退出请按\33[31;1m Q\33[1m"% first_li[init_cho-1]) 23 deci_cho = input(">>> ") 24 if deci_cho.lower() == "y": 25 del city[first_li[init_cho-1]] 26 print("删除成功,自动跳回上一级") 27 break 28 elif deci_cho.lower() == "q": 29 q = 1 30 break 31 elif deci_cho.lower() == "p": 32 break 33 elif deci_cho.lower() == "m": 34 print("您要改成什么名字?") 35 mod_sheng_name = input(">>>") 36 if mod_sheng_name.isalpha(): 37 city[mod_sheng_name] = city.pop(first_li[init_cho-1]) 38 print("修改成功") 39 elif deci_cho.lower() == "n": 40 while True: 41 p2 = 0 42 second_li = [] 43 print("\33[34;1m二级列表\33[1m".center(50,"=")) 44 for x, y in enumerate(city[first_li[init_cho-1]], 1): 45 print(x, y) 46 second_li.append(y) 47 print("请按\33[31;1m序号\33[1m选择、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 48 sec_cho = input(">>> ") 49 if sec_cho.lower() == "p": 50 p = 1 51 break 52 elif sec_cho.lower() == "q": 53 q = 1 54 break 55 elif sec_cho.isdecimal(): 56 sec_cho = int(sec_cho) 57 if sec_cho > 0 and sec_cho <= len(city[first_li[init_cho - 1]]): 58 while True: 59 print("删除\33[31;1m%s\33[1m请按\33[31;1m Y\33[1m 、修改请按\33[31;1m M\33[1m 、返回上一级请按\33[31;1m P\33[1m 、进入下一级请按\33[31;1m N\33[1m 、全部退出请按\33[31;1m Q\33[1m"% second_li[sec_cho-1]) 60 third_cho = input(">>> ") 61 if third_cho.lower() == "y": 62 del city[first_li[init_cho-1]][second_li[sec_cho-1]] 63 print("删除成功,自动跳回上一级") 64 break 65 elif third_cho.lower() == "m": 66 print("您要改成什么名字?") 67 mod_shi_name = input(">>>") 68 city[first_li[init_cho - 1]][mod_shi_name] = city[first_li[init_cho - 1]].pop(second_li[sec_cho-1]) 69 print("修改成功,自动跳回上一级") 70 break 71 elif third_cho.lower() == "p": 72 break 73 elif third_cho.lower() == "q": 74 q = 1 75 break 76 elif third_cho.lower() == "n": 77 while True: 78 print("\33[36;1m三级列表\33[1m".center(50, "=")) 79 for t, n in enumerate(city[first_li[init_cho - 1]][second_li[sec_cho - 1]], 1): 80 print(t, n) 81 print("请按\33[31;1m序号\33[1m选择删除或修改、添加请按 \33[31;1mA\33[1m 、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 82 last_cho = input(">>> ") 83 if last_cho.isdecimal(): 84 last_cho = int(last_cho) 85 while True: 86 if last_cho > 0 and last_cho <= len(city[first_li[init_cho - 1]][second_li[sec_cho - 1]]): 87 print("删除请按 \33[31;1mD\33[1m 、修改请按 \33[31;1mM\33[1m 、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 88 one_more_cho = input(">>> ") 89 if one_more_cho.lower() == "d": 90 del city[first_li[init_cho - 1]][second_li[sec_cho - 1]][last_cho - 1] 91 print("删除成功,自动跳回上一层") 92 break 93 elif one_more_cho.lower() == "m": 94 print("您要改成什么名字?") 95 mod_last = input(">>> ") 96 city[first_li[init_cho - 1]][second_li[sec_cho - 1]][last_cho - 1] = mod_last 97 print("修改成功,自动跳回上一层") 98 break 99 elif one_more_cho.lower() == "p": 100 break 101 elif one_more_cho.lower() == "q": 102 q = 1 103 break 104 else: 105 print("输入有误,请重新输入\n") 106 else: 107 print("输入超出范围,请重新输入\n") 108 elif last_cho.lower() == "a": 109 print("请输入添加的名") 110 add_last = input(">>> ") 111 city[first_li[init_cho - 1]][second_li[sec_cho - 1]].append(add_last) 112 print("添加成功") 113 elif last_cho.lower() == "p": 114 p2 = 1 115 break 116 elif last_cho.lower() == "q": 117 q = 1 118 break 119 if q == 1: 120 break 121 else: 122 print("输入有误,请重新输入\n") 123 if q == 1: 124 break 125 if p2 == 1: 126 break 127 else: 128 print("输入超出范围,请重新输入\n") 129 else: 130 print("输入有误请重新输入\n") 131 if q == 1: 132 break 133 if q == 1: 134 break 135 if p == 1: 136 break 137 else: 138 print("输入超出范围,请重新输入\n") 139 elif init_cho.lower() == "a": 140 while True: 141 print("\33[36;1m添加信息\33[1m".center(50, "=")) 142 print("请输入省/直辖市、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 143 add_sheng = input(">>> ") 144 if add_sheng.lower() == "p": 145 break 146 elif add_sheng.lower() == "q": 147 q = 1 148 break 149 elif city.get(add_sheng,0) == 0: 150 city.update({add_sheng:{}}) 151 print("添加成功\n") 152 print("请输入市/州、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 153 add_shi = input(">>> ") 154 if add_shi.lower() == "p": 155 break 156 elif add_shi.lower() == "q": 157 q = 1 158 break 159 elif city[add_sheng].get(add_shi,0) == 0: 160 city[add_sheng].update({add_shi:[]}) 161 print("添加成功\n") 162 while True: 163 print("请输入县/街道、可多次写入、返回上一级请按\33[31;1m P\33[1m 、全部退出请按\33[31;1m Q\33[1m") 164 add_xian = input(">>> ") 165 if add_xian.lower() == "p": 166 break 167 if add_xian.lower() == "q": 168 q = 1 169 break 170 city[add_sheng][add_shi].append(add_xian) 171 print("添加成功") 172 if q == 1: 173 break 174 elif init_cho == "5": 175 print(city) 176 else: 177 print("输入有误,请重新输入\n") 178 if q == 1: 179 break
【题】编写代码,购物车
- 如下商品列表
-
goods = [
{"name": "电脑", "price": 1000},
{"name": "Iphone", "price": 1200},
{"name": "豪车", "price": 3280},
{"name": "别墅", "price": 6500},
{"name": "游艇", "price": 5800},
{"name": "美女", "price": 2500},
]
- 完成以下要求:
- 要求用户输入总资产,列入:15000
- 判断驶入的金额能否购买价格最低的商品,如果不能让用户重新输入
- 显示商品列表,让用户根据序号选择商品,加入购物车
- 查看购物车,购物车内如果有相同的产品不要重复显示,以产品后面加数字形式表示此产品在购物车有两个或两个以上
- 结算时,判断购物车是否为空,如果为空则提示填充购物车
- 可以让用户删除购物车内的产品,或清空购物车
- 结算时如果余额不足,则提示账户余额不足
1 goods = [ 2 {"name": "电脑", "price": 1000}, 3 {"name": "Iphone", "price": 1200}, 4 {"name": "豪车", "price": 3280}, 5 {"name": "别墅", "price": 6500}, 6 {"name": "游艇", "price": 5800}, 7 {"name": "美女", "price": 2500}, 8 ] 9 while True: 10 q = 0 11 money = [] 12 shopping_cart = [] 13 for i, v in enumerate(goods, 1): 14 money.append(v["price"]) 15 print("请输入您的总金额") 16 salary = input(">>> ") 17 if salary.isdecimal(): # 判断只让输入十进制数字 18 salary = int(salary) 19 money.sort() 20 if salary <= 0: 21 print("\n你玩我呢,没钱还来买\n") 22 print("直接退出") 23 break 24 elif salary > 0 and salary < money[0]: # 判断输入的金额能否购买价格最低的商品 25 print("你的金额买不起任何一个东西\n") 26 elif salary > money[0]: 27 while True: 28 all_price = 0 29 print("\33[36;1m商品列表\33[1m".center(40, "=")) 30 for i, v in enumerate(goods, 1): 31 print("%d %s \33[34;1m%d\33[1m" % (i, v["name"].ljust(4, " "), v["price"])) 32 print("请输入产品\33[31;1m序号\33[1m添加到购物车、返回上一层请按 \33[31;1mP \33[1m、完全退出请按 \33[31;1mQ\33[1m") 33 seq_num = input(">>> ") 34 if seq_num.lower() == "p": 35 break 36 if seq_num.lower() == "q": 37 q = 1 38 break 39 if seq_num.isdecimal(): 40 seq_num = int(seq_num) 41 if seq_num > 0 and seq_num <= len(goods): 42 shopping_cart.append(goods[seq_num - 1]) 43 for y in shopping_cart: 44 all_price += y["price"] 45 print("\33[33;1m%s\33[1m 已添加到购物车\n" % (goods[seq_num - 1]["name"])) 46 while True: 47 print("继续添加产品请按 \33[31;1mC\33[1m 、结算请按 \33[31;1mB\33[1m 、查看购物车请按 \33[31;1mS\33[1m 、完全退出请按 \33[31;1mQ\33[1m") 48 final_cho = input(">>> ") 49 if final_cho.lower() == "c": 50 break 51 elif final_cho.lower() == "b": 52 while True: 53 print("您的余额为:\33[34;1m%d\33[1m 您购买的商品总价为:\33[34;1m%d\33[1m 确定购买吗? 确定 \33[31;1mY\33[1m 取消 \33[31;1mN\33[1m" % (salary, all_price)) 54 confirm_bill = input(">>> ") 55 if confirm_bill.lower() == "y": 56 if shopping_cart != []: 57 if salary >= all_price: 58 salary = salary - all_price 59 print("购买成功\n") 60 all_price = 0 61 shopping_cart = [] 62 break 63 elif salary < all_price: 64 print("-_-!余额不足\n") 65 break 66 elif shopping_cart == []: 67 print("购物车空空如也,填充后再来吧\n") 68 break 69 elif confirm_bill.lower() == "n": 70 break 71 else: 72 print("输入有误,请重新输入\n") 73 elif final_cho.lower() == "s": 74 while True: 75 print("\33[35;1m购物车\33[1m".center(40, "=")) 76 temp_cart = [] 77 for y in shopping_cart: 78 if y not in temp_cart: 79 temp_cart.append(y) 80 for m, z in enumerate(temp_cart, 1): 81 print("%d %s \33[34;1m%d\33[1m %d个" % (m, z["name"].ljust(4, " "), z["price"], shopping_cart.count(z))) 82 print("\n购物车商品总金额为:\33[34;1m%d\33[1m" % all_price) 83 print("您的余额为:\33[34;1m%d\33[1m" % salary) 84 print("按\33[31;1m序号\33[1m可删除商品 、继续请按 \33[31;1mC\33[1m 、清空购物车请按 \33[31;1mE\33[1m") 85 ctrl_shop_cart = input(">>> ") 86 if ctrl_shop_cart.lower() == "c": 87 break 88 elif ctrl_shop_cart.lower() == "e": 89 all_price = 0 90 shopping_cart = [] 91 print("以清空购物车") 92 break 93 elif ctrl_shop_cart.isdecimal(): 94 ctrl_shop_cart = int(ctrl_shop_cart) 95 if ctrl_shop_cart > 0 and ctrl_shop_cart <= len(temp_cart): 96 all_price = all_price - temp_cart[ctrl_shop_cart - 1]["price"] 97 shopping_cart.reverse() 98 shopping_cart.remove(temp_cart[ctrl_shop_cart - 1]) 99 shopping_cart.reverse() 100 print("删除成功\n") 101 else: 102 print("输入超出范围,请重新输入") 103 else: 104 print("输入有误,请重新输入\n") 105 elif final_cho.lower() == "q": 106 q = 1 107 break 108 else: 109 print("输入有误,请重新输入\n") 110 else: 111 print("数字超出范围,请重新输入\n") 112 else: 113 print("请输入数字\n") 114 if q == 1: 115 break 116 117 else: 118 print("\n只能输入数字,请重新输入\n") 119 120 if q == 1: 121 break
持续更新 !!!!!