Python 最最基础练习题

本文是零基础刚接触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条数据,数据类型不限,如:
  • alex-1alex1@live.com1
    alex-2alex2@live.com2
    alex-3alex3@live.com3
    alex-4alex4@live.com4
    alex-5alex5@live.com5

  • 提示用户输入要查看的页码,当用户输入指定的页码,则显示指定数据
  1. 每页显示10条数据
  2. 如果用户输入页码是非十进制数字,则提示内容格式错误,重新输入
 1 li = []
 2 for i in range(311):
 3     li.append("alex-%dalex%d@live.com%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. 添加名片
    2. 删除名片
    3. 修改名片
    4. 查询名片
    5. 退出系统
  • 程序运行后,除非选择退出系统,否则重复执行功能
  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. 允许用户增加内容
  2. 允许用户查看某一个级别的内容
  3. 即可查看内容也可修改内容
  4. 也可删除内容
  5. 每一级的循环嵌套必须包含返回上一层,也包含全部退出

 

  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},
    ]
  • 完成以下要求:
  1. 要求用户输入总资产,列入:15000
  2. 判断驶入的金额能否购买价格最低的商品,如果不能让用户重新输入
  3. 显示商品列表,让用户根据序号选择商品,加入购物车
  4. 查看购物车,购物车内如果有相同的产品不要重复显示,以产品后面加数字形式表示此产品在购物车有两个或两个以上
  5. 结算时,判断购物车是否为空,如果为空则提示填充购物车
  6. 可以让用户删除购物车内的产品,或清空购物车
  7. 结算时如果余额不足,则提示账户余额不足
  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

 

 

 

 

 

 

 

 

 

持续更新 !!!!!

 

 

转载于:https://www.cnblogs.com/piaoxionghao/p/8337811.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值