0003.5-20180422-自动化第四章-python基础学习笔记--脚本

本文介绍了一个基于Python实现的简单购物程序,包括用户输入余额、商品选购流程及支付逻辑。此外,还展示了如何生成大量用户数据并按页展示,以及实现验证码生成、敏感词过滤等功能。

0003.5-20180422-自动化第四章-python基础学习笔记--脚本

 

1-shopping

  1 """
  2 v = [
  3     {"name": "电脑","price":"1999"},
  4     {"name": "鼠标", "price": "10"},
  5     {"name": "游艇", "price": "20"},
  6     {"name": "美女", "price": "998"},
  7 ]
  8 
  9 #1.让用户输入自己账户余额
 10 while True:
 11     money = input("请输入账户金额:")
 12     money = money.strip()   #去掉输入字符前后的空格
 13     if money.isdecimal():   #判断输入的字符是否为十进制字符
 14         money = int(money)  #将输入的字符通过int格式化为数字
 15         break
 16     else:
 17         print("请正确输入数字!")   #如果输入的不为十进制字符,提示正确输入数字
 18 print(money, type(money))   #显打印钱的金额,再打印金额数字的字符类型,此处类型应为:int
 19 
 20 """
 21 
 22 """
 23 v = [
 24     {"name": "电脑","price":"1999"},
 25     {"name": "鼠标", "price": "10"},
 26     {"name": "游艇", "price": "20"},
 27     {"name": "美女", "price": "998"},
 28 ]
 29 
 30 #2. 显示商品列表
 31 #解决思路1-------用户和开发者都麻烦
 32 for item in v:
 33     #item的类型为字典
 34     #第一次循环时,item = {"name": "电脑","price":"1999"} ,可以分别通过字典的key取对应的value值
 35     print(item['name'],item['price'])
 36 
 37 sel = input('请选择商品:')   # sel = '鼠标' v[1]
 38 for row in v:
 39     if sel == row['name']:
 40         print('商品价格为:',row['price'])
 41 """
 42 
 43 v = [
 44     {"name": "电脑","price":"1999"},
 45     {"name": "鼠标", "price": "10"},
 46     {"name": "游艇", "price": "20"},
 47     {"name": "美女", "price": "998"},
 48 ]
 49 #解决思路2-----让用户和开发者都比较简单
 50 
 51 # num = 0   #只有程序员才明白数字是从0开始计算的,所以对用户不太友好
 52 # for item in v:
 53 #     print(num, item['name'], item['price'])
 54 #     num += 1
 55 
 56 #2.显示商品列表
 57 while True:
 58     money = input("请输入账户金额:")
 59     money = money.strip()   #去掉输入字符前后的空格
 60     if money.isdecimal():   #判断输入的字符是否为十进制字符
 61         money = int(money)  #将输入的字符通过int格式化为数字
 62         break
 63     else:
 64         print("请正确输入数字!")   #如果输入的不为十进制字符,提示正确输入数字
 65 #print(money, type(money))   #显打印钱的金额,再打印金额数字的字符类型,此处类型应为:int
 66 print(money)
 67 
 68 num = 1
 69 for item in v:
 70     print(num, item['name'], item['price']) #打印商品序号,商品名称、商品价格
 71     num += 1
 72 
 73 
 74 #3.让用户购买商品
 75 cost = 0
 76 while True:
 77     index = input('请输入商品序号(q/Q结算):')
 78     if index.lower().strip() == "q":
 79         break
 80     #应考虑用户输入是否:空格,是否数字,范围
 81     index = index.strip()
 82     if index.isdecimal():
 83         index = int(index)
 84         index = index - 1   #用户输入的index数值需减去1,才为商品的实际序号
 85         #if index > 0 and index < 5
 86         if index >= 0 and index < len(v):
 87             #用户输入的序号是正确的
 88             # v[index] 为字典
 89 
 90             #以下为拆分字符串格式化
 91             #v[index]['name']
 92             #val = v[index]['price']
 93             #val1 = int(val)
 94             #temp = '您购买商品%s,价格:%d' %(v[index]['name'],int(v[index]['price']))
 95             print('您购买商品:%s,价格:%d' %(v[index]['name'],int(v[index]['price'])))
 96 
 97             #----或者用上面的方法拆开
 98 
 99             #v[index]['name']
100             #v[index]['price']
101             #print('您购买商品%s,价格:%d' %(v[index]['name'],v[index]['price']))
102             cost += int(v[index]['price'])
103             print('合计金额:',cost)
104         else:
105             print('输入商品序号不存在!')
106     else:
107         print('请输入数字!')
108 if money >= cost:
109     print('购买成功')
110 else:
111     print('余额不足')
112 
113 #扩展:问题:购买商品信息,商品名称,单价,个数

 

2-39-ti-creat-data-split-page-show

 1 #创造305跳数据,用户每输入页码显示10条数据
 2 user_list = []
 3 i = 1
 4 while i <= 305:
 5     #创建字典方法3时注释掉下文:
 6     # name = "alex-%d" %(i,)
 7     # email = "email-%d" %(i,)
 8     # pwd = "pwd-%d" %(i,)
 9 
10 #创建字典方法1
11     # temp = {}
12     # temp['username'] = name
13     # temp['email'] = email
14     # temp['password'] = pwd
15 
16 #创建字典方法2
17     # temp = {
18     #     'username' : name,
19     #     'email' : email,
20     #     'password' : pwd
21     # }
22 
23 #创建字典方法3
24     # temp = {
25     #     'username' : "alex-%d" %(i,),
26     #     'email' : "email-%d" %(i,),
27     #     'password' : "pwd-%d" %(i,)
28     # }
29 
30 #方法4 直接在列表中定义字典,通过开始的while循环并在列表的尾部进行追加生成数据
31     user_list.append({
32         'username' : "alex-%d" %(i,),
33         'email' : "email-%d" %(i,),
34         'password' : "pwd-%d" %(i,)
35     })
36     i += 1
37 
38 while True: #循环让用户可以一直选择想看的数据,直到用户选择退出程序
39     page = input('请选择页码(每页显示10条数据)')
40     # page = page.strip() #去掉输入字符前后的空格
41     # if page.isdecimal(): #判断输入的字符是否为十进制字符
42     #     page = int(page)    #将输入的字符通过int格式化为数字
43     #     break
44     # else:
45     #     print('请输入正确的数值页码!')    #如果输入的不为十进制字符,提示正确输入数字
46     page = int(page)
47     start = (page - 1) * 10 #定义在列表中取页码数字的起始位置数值
48     end = page * 10 #定义在列表中取页码数字的结束位置数值
49     current_page_user = user_list[start:end]    #指定用户实际输入页码后获取列表中数据的起始和结束位置
50     for item in current_page_user:
51         print(item)

 

3-17-ti-random-check-code

 1 def check_code():
 2     import random
 3     checkcode = ''
 4     for i in range(4):
 5         current = random.randrange(0,4)
 6         if current != i:
 7             temp = chr(random.randint(65,90))
 8         else:
 9             temp = random.randint(0,9)
10         checkcode += str(temp)
11     return checkcode
12 
13 #随机生成验证码
14 while True:
15     code = check_code()
16     print(code)
17     inp = input('请输入验证码:')
18     if inp.strip().lower() == code.strip().lower():
19         print('验证码输入成功!')
20         break
21     else:
22         print('验证码错误,请重新输入!')

 

4-18-ti-replace-sensitive-word

1 #针对苍老师,东京热进行敏感词替换过滤
2 li = ['苍老师','东京热']
3 msg = input('请小心输入内容:')
4 for item in li:
5     if item in msg:
6         msg = msg.replace(item, '***')
7 print(msg)

 

5-12-ti-user-str-join-str

 1 #给定一个列表中有很多字符串,通过将列表中的字符串之间通过下划线进行连接:
 2 
 3 """
 4 #方法1:
 5 li = ['alex','eric','rain','y8ik0','ih8vbb']
 6 
 7 msg = ""
 8 is_first = True #设定第一次循环值为真
 9 for item in li:
10     if is_first:    #第一次循环值为真时,tmp 的值等于item循环获取的值
11         tmp = item
12         is_first = False    #第一次item取完值后将is_fisrst修改为假,使tmp 不再直接等于item获得的值
13     else:
14         tmp = "_" + item    #字符串拼接
15     msg += tmp  #字符串拼接
16 print(msg)
17 
18 """
19 
20 """
21 #方法2:
22 #字符串,v = "xxx"      v.join(可迭代对象)
23 #for 循环的,就是可迭代对象
24 
25 li = ['alex','eric','rain','y8ik0','ih8vbb']
26 
27 # v = "_"
28 # result = v.join(li)
29 # print(result)
30 
31 #方法2改进优化版:
32 
33 result = "_".join(li)
34 print(result)
35 
36 """
37 #方法3:王青帅版
38 # 思路:根据列表索引取第0个值,插入到新的列表li1中,然后通过循环在新的列表li1的尾部通过取li列表长度循环取原li列表的值,并且在其前面添加下划线,追加在新列表元素的后面
39 
40 li = ['alex','eric','rain','y8ik0','ih8vbb']
41 
42 length = len(li)
43 li1 = []
44 li1.insert(0,li[0])
45 i = 1
46 while i <= length - 1:
47     li1.append('_' + li[i])
48     i += 1
49 print(li1)
50 
51 a = ''
52 for item in li1:
53     a += item
54 print(a)

 

6-13-ti-addition-and-range

 1 #实现一个整数加法计算器,考虑到用户输入的字符是否是存在空格
 2 
 3 """
 4 sum = 0
 5 while True:
 6     content = input('请输入数字:')
 7     num = content.split('+')
 8     for i in num:
 9         i = i.strip()
10         sum += int(i)
11     print(sum)
12 
13 """
14 #加法计算器方法2:-----只能是两个数字相加的计算器
15 # 5 + 9
16 content = input('请输入表达式:')
17 #content.split('+') #以加号作为关键字符进行分割,可以将给定字符中所有有加号的地方进行分割
18 #content.split('+',2)   #对给定字符中的前两个加号的地方进行分割,后面有加号的地方不分割
19 a,b = content.split('+',1)  #对给定字符中的第一加号的地方进行分割,后面有加号的地方不分割
20 a = int(a.strip())
21 b = int(b.strip())
22 print(a+b)
23 
24 
25 
26 """
27 sum = 0
28 content = input('请输入数字:')
29 num = content.split('+')
30 for i in num:
31     i = i.strip()
32     sum += int(i)
33 print(sum)
34 
35 """
36 
37 ###########
38 #对于有限的数据循环---->使用for ,range
39 
40 #对于死循环,永远无限循环----> while True
41 
42 
43 ##############
44 #   range ---用于生成连续的数字,列表类型
45 #   xrange(),用于生成连续的数字,for 循环时才能使用,未知类型(生成器)
46 
47 # py2.7 中的range 是打印所有的数据,py2.7中有加强版的xrange,使用一个才生成一个数据
48 #py3 中的range使用一个才生成一个数据,相当于py2.7中的xrange
49 # py3 range = xrange(2.7)
50 
51 """
52 
53 #打印1-100所有数字,除了77之外
54 
55 for num in range(1,101):
56     if num == 77:
57         continue
58     print(num)
59 """
60 
61 """
62 #打印1-100之间所有的奇数:
63 
64 for num in range(1,100,2):  #1,为起始数据,100为小于此数据,2相当于步长----默认不写,相当于步长为1
65     print(num)
66 """
67 
68 """
69 #打印1-100之间所有的数,倒序显示:
70 for num in range(100,0,-1):
71     print(num)
72 """
73 
74 """
75 # 打印如下列表的索引序号:
76 
77 li = [11,22,33,44,55,66]
78 #print(len(li))
79 for num in range(0,len(li)):
80     print(num)
81 
82 """

 

转载于:https://www.cnblogs.com/mypython2018/p/9658407.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值