0003.5-20180422-自动化第四章-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 """