1使用while 循环输入1,2,3,4,5,6,,8,9,10
count = 0 while count<10: count+=1 if count ==7: continue print(count)
count = 0 while count<10: count+=1 if count ==7: pass else: print(count)
2.求1——100的所有数的和
sum =0 count = 0 while count<=100: count+=1 sum = sum +count print(sum)
3.输出1——100的奇数
count = 0 while count<100: count+=1 if count %2 == 1: print(count) continue
4.求100以所有奇数相加
count = 0 sum = 0 while count<100: count+=1 if count %2 == 1: sum = sum +count print(sum)
5.求1-2+3-4+5......+99的所有数的和
count = 0 sum = 0 while count<99: count+=1 if count %2 == 0: sum = sum -count else: sum = sum +count print(sum)
6.简单的用户登陆(三次机会重试)
i =0 while i<3: user_name = input("请输入您的用户名") password = int(input("请输入您的密码")) if user_name == 'zzz' and password ==123: print("登录成功") break else: print('请重新输入') i +=1 if i ==3: print("您的用户已经冻结") break
加强版:
user_name ='zzz' password = 123 i =0 while i<3: user1_name = input("请输入您的用户名") password1 = int(input("请输入您的密码")) if user1_name == user_name and password1 ==password: print("登录成功") break else: print('登录失败,您还有%d此登录的机会'%(2-i)) if (2-i) ==0: result = input("是否还需要继续输入(Yes or NO):") if result == 'Yes': i = 0 continue i+=1 if i ==3: print("您的用户已经冻结") else: print("欢迎下次光临")
注册
print("请开始您的注册") id_name = input('请输入您要注册的用户名') id_password = input('请输入您要注册的密码') print('恭喜您,注册成功') with open('123.txt','w+',encoding='utf-8') as f: # f.writelines(id_name+ '\n') # f.writelines(id_password+'\n') f.write('{}\n{}'.format(id_name,id_password)) f.seek(0) # f.read() passge_lis = f.readlines() # print(passge_lis) user_name = passge_lis[0].strip() password = int(passge_lis[1].strip()) print(user_name,password)
6 1-2+3-4...............+98-99 除去88 ,把所有的数都相加起来
sum = 0 i = 0 j=-1 while i<99: i+=1 j=-j if i ==88: j=-j continue else: sum = sum + i*j print(sum)
sum = 0 i = 0 j=-1 while i<99: i+=1 if i ==88: continue else: j = -j sum = sum + i*j print(sum)
7. li= [1,2,3,'alex',[2,5,'x'],'asas'] 把每一个列表中的元素都遍历出来,包括列表中的列表
li= [1,2,3,'alex',[2,5,'x'],'asas'] for i in li: if type(i) == list: for u in i: print(u) else: print(i) for i in range(len(li)): if type(li[i]) == list: for j in li[i]: print(j) else: print(li[i])
8
lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv'] #将列表中的数字变成字符串的时候:直接替换;先删除在添加 lis.remove(3) lis.insert(1,"100") # 将列表中的字符串变成数字的时候:直接替换;先删除在添加;或者是先replace 变成字符串后在转化为数字 lis[3][2][1][2]=int(lis[3][2][1][2].replace("1","101")) print(lis)
9 1查找列表li中的元素,移除每个元素的空格,2并找出以’A’或者’a’开头,并以’c’结尾的所有元素,3并添加到一个新列表中,最后循环打印这个新列表。
li = ['taibai ','alexC','AbC ','egon',' Ritian',' Wusir',' aqc'] lis =[] for i in li: s =i.strip() if (s.startswith("A") or s.startswith("a"))and s.endswith("c"): lis.append(s) for i in li: s =i.strip(' ') if s[0].upper() == "A" and s[-1] == "c": lis.append(s) print(lis)
10 # 开发敏感词语过滤程序,提示用户输入评论内容,如果用户输入的内容中包含特殊的字符:# 敏感词列表 li = ["苍老师","东京热",”武藤兰”,”波多野结衣”]# 则将用户输入的内容中的敏感词汇替换成***,并添加到一个列表中;# 如果用户输入的内容没有敏感词汇,则直接添加到上述的列表中。
li = ["苍老师","东京热","苍老师","波多野结衣"] conten = input("请输入内容:") b = [] for i in li : if i in conten: #n = len(i) #conten = conten.replace(i,"*"*n) conten = conten.replace(i,"*") b.append(conten) print(b)
#错误的版本 li = ["苍老师","东京热","苍老师","波多野结衣"] conten = input("请输入内容:") b = [] for i in li : if i in conten: n = len(i) new_data = conten.replace(i,"*"*n) #内容要重新放在循环过程中判断。 b.append(new_data) #这里添加不能放在在循环体内 else: b.append(conten) print(b)
10 用一行代码改变a和b的值
a=1 b=2 a,b = b,a #类似dict中的k,v print(a,b)
11. 输入任意的一串字母+数字。计算出数字的个数。注意连在一起的数字为一个整体。例如:35sdsadwdada656ds123sdsadad99 一共有4个数字。
info = input("<<<") #'sasda6565sdsa797asd1543' ---< ' 6565 797 1543' for i in info: if i.isalpha(): info=info.replace(i," ") num = info.split() #' 6565 797 1543' ------> ['6565', '797', '1543'] print(len(num))
12有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}
li= [11,22,33,44,55,66,77,88,99,90]
dic ={'k1':[],'k2':[]}
for i in li:
if i>66:
dic['k1'].append(i)
elif i==66:
continue
else:
dic['k2'].append(i)
print(dic)
li= [11,22,33,44,55,66,77,88,99,90] dic ={} a=[] b=[] for i in li: if i>66: a.append(i) elif i==66: continue else: b.append(i) dic.setdefault('k1',a) dic.setdefault('k2',b) print(dic)
13
''' 输出商品列表,用户输入序号,显示用户选中的商品 商品 li = ["手机", "电脑", '鼠标垫', '游艇'] 要求:1:页面显示 序号 + 商品名称,如: 1 手机 2 电脑 … 2: 用户输入选择的商品序号,然后打印商品名称 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。 4:用户输入Q或者q,退出程序。 ''' li = ["手机", "电脑", '鼠标垫', '游艇'] while 1: for i in li: index = li.index(i)+1 print('{}\t\t{}'.format(index,i)) #\t 空格 \n 换行 num = input('请输入选择的商品序号:') if num.isdigit(): num = int(num) if num >0 and num<= len(li): print(li[num-1]) else: print("请输入有效的数字:") elif num.upper() == 'Q': print('欢迎下一次购物') break else: print('请输入数字')
14 购物车 (有点小问题,不完整)
#购物车 li =[ {'name':'苹果','price':'10'}, {'name':'香蕉','price':'20'}, {'name':'西瓜','price':'30'}, ] shopping_cars = {} all_money = 0 print('欢迎来到虚拟超市') while 1: for k,j in enumerate(li): print('序号:{}\t商品名称:{}\t商品的价格:{}'.format(k+1,j['name'],j['price'])) goods_num = input("请输入您要购买的商品的序号:") if goods_num.isdigit(): if int(goods_num)>0 and int(goods_num) <= len(li): print('商品名称:{}\t商品的价格:{}'.format(li[int(goods_num)-1]['name'],li[int(goods_num)-1]['price'])) goods_digit = input("请输入您所购买的商品的数量") if goods_digit.isdigit(): if int(goods_digit)>0: goods_money = int(goods_digit) * int(li[int(goods_num)-1]['price']) all_money = goods_money + all_money print('商品名称:{}\t商品的数量:{}\t总价钱:{}'.format(li[int(goods_num)-1]['name'],goods_digit,goods_money)) if li[int(goods_num)-1]['name'] in shopping_cars: while 1 : choose = input("请您对您的商品做出改变的序号(0为增加数量;1为减少数量,3为删除商品):") if choose == '0': shopping_cars[li[int(goods_num)-1]['name']] = int(shopping_cars[li[int(goods_num)-1]['name']]) + int(goods_digit) break elif choose =='1': shopping_cars[li[int(goods_num) - 1]['name']] = int(shopping_cars[li[int(goods_num) - 1]['name']]) - int(goods_digit) all_money = all_money -2*goods_money break #elif choose == '3': #有问题 #all_money = all_money -1*goods_money #del shopping_cars[li[int(goods_num)-1]['name']] #break else: print('请输入有效的序号') continue else: shopping_cars[li[int(goods_num)-1]['name']] = goods_digit print('购物车的商品:{}'.format(shopping_cars)) go_on = input("是否付款( Y(y) or N(n) ):") if go_on.upper() == 'Y': all_money1 = all_money print('购物车的商品:{}'.format(shopping_cars)) print("购物车里所有商品总计为{}元".format(all_money1)) have_money = input("请您付款(元):") if all_money <= int(have_money): print("本次购物成功,谢谢您的光临") going = input("是否继续购物( Y(y) or N(n):") if going.upper() == 'Y': all_money =0 shopping_cars.clear() continue else: break else: print('您的余额不足') break else: continue else: print('请输入有效的数字') else: print("输入有误,请输入数字") else: print('请输入有效的数字') else: print("输入有误,请输入数字")
作业:
#作业;处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕 # def func(filename,content): # with open(filename,encoding='utf-8') as f : # # while 1: # # line = f.readline() # for line in f: # if content in line: # yield line # # g = func('file','python') # # for i in g : # print(i.strip())
时间差
自己的版本:
# 计算时间差 # '2017-09-11 08:30:00' ----'2017-09-12 11:00:00' import time star_time = time.strptime('2017-09-11 08:30:00',"%Y-%m-%d %H:%M:%S") end_time = time.strptime('2017-09-12 11:00:00',"%Y-%m-%d %H:%M:%S") new_star_time = time.mktime(star_time) new_end_time = time.mktime(end_time) new_time = new_end_time - new_star_time print(new_time) #秒 struc_time = time.localtime(new_time) time = time.strftime("%H(h)%M(m)%S(s)",struc_time) print(time) # 小时;分钟;秒钟 10(h)30(m)00(s)
老师的版本:
import time true_time=time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S')) time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S')) dif_time=time_now-true_time struct_time=time.gmtime(dif_time) print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(struct_time.tm_year-1970,struct_time.tm_mon-1, struct_time.tm_mday-1,struct_time.tm_hour, struct_time.tm_min,struct_time.tm_sec))
随机的验证码 (4位)
自己的版本:
#随机4位的验证码 #有限的循环一般用range import random def func(): ret_lis = [] for i in range(4) : num = str(random.randint(0,9)) arip_num = random.randint(65,90) #[65,90] 生产数字, 字母 = chr(数字) #随机生产字母 用 ascii 码 arp = chr(arip_num) #字母= chr(数字) ret = random.choice([num,arp]) ret_lis.append(ret) ret = " ".join(ret_lis) return ret print(func()) #自己写的版本是把取到的4个元素放到列表后在转化为str
老师的版本:
#循环组合 import random def v_code(): code = '' for i in range(5): num=random.randint(0,9) alf=chr(random.randint(65,90)) add=random.choice([num,alf]) code="".join([code,str(add)]) #循环一次组合一次 return code print(v_code())
计算器大作业
计算:# a = ' 1 - 2 * ( ( 6 0 -3 0 -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )'
要求:先计算括号里面的,在根据四则运算来计算;用的正则表达式的知识
import re def del_backet(x): return x.strip('()') def sovle(x): if '+-' in x : return x.replace('+-','-') if '-+' in x : return x.replace('-+','-') if '--' in x : return x.replace('--','+') if '++' in x : return x.replace('++','+') else: return x def work(x): if '/'in x: i,j = x.split('/') return str(float(i) / float(j)) if '*' in x: i, j = x.split('*') return str(float(i) * float(j)) def many_num(flat): #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 while 1: ret = re.search('\d+\.?\d*[*/]-?\d+\.?\d*',flat) # 2*5;10/3;..... if ret: ret = ret.group() #40/5;2*5;10/3 new_ret = work(ret) #8;10;10/3 flat = flat.replace(ret, new_ret) # 40/5 --->8; 9-3.33333 + 7 /3*99/4*2998 +10 * 568/14 flat = sovle(flat) # 55+55-5+4 else: # ret = re.findall('-?\d+\.?\d*', flat) #[55,55,-5,5] 只要把数字匹配出来,累加就可以了,用findall拿到一个列表 ret = re.finditer('-?\d+\.?\d*', flat) #迭代器 n_ret = [i.group() for i in ret] #列表的推导式 num = 0 for i in n_ret: num += float(i) return str(num) def cla_func(a): while 1: r = a.replace(' ','') #去空格 no_backet = re.search('\([^()]+\)',r) if no_backet: no_ret = no_backet.group() #(9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ) flat = del_backet(no_ret) # 40/5 #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 new_flat = many_num(flat) # 40/5 #9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 a = r.replace(no_ret,new_flat) a = sovle(a) else: ret = many_num(r) #没有空格后 return ret if __name__ == '__main__': ret =cla_func(input('>>>')) #a = ' 1 - 2 * ( ( 6 0 -3 0 -(40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 )) - (-4*3)/ (16-3*2) )' print(ret)
有一个类的定义
1.初始化多个不同的对象
2.求最高的age的对象的name
# class Person: # def __init__(self,name,age): # self.name = name # self.age = age # # l = [] #对象 # for i in range(10,21): # l.append(Person('alex%s'%(i),i))
# ne_age = max([i.age for i in l]) #内置函数 # # for i in l: # if i.age == ne_age: # print(i.name)
# obj1 = max(l,key=lambda obj:obj.age) # 直接拿到对象 !!!print (obj1.name)
有四个数字:1,2,3,4,能组成多少个不相同且无重复数字的三位数?,分别是多少?
#有4个数字:1,2,3,4;能组成多少个互不相同且无重复数字的三位数字?分别是多少? #循环嵌套 # def with_num(): # n = 0 # for i in range(1,5): #百位 # for j in range(1, 5): #十位 # for k in range(1, 5): #个位 # if i==j or i==k or j==k: # continue # n+=1 # print(n) # yield (str(i)+str(j)+str(k)) # # for i in with_num(): # print(i)
假设有100个person的对象,若两个对象的obj1,obj2的name和sex属性相同,则我们认为两个对象为同一个对象,已知一个列表中有100个对象,对这100个对象进行去重。
提示: 内置方法
# class Person: # def __init__(self,name,age,sex): # self.name = name # self.age = age # self.sex = sex # # def __eq__(self, other): # if self.name == other.name and self.sex == other.sex: # return True # # def __hash__(self): # return hash(self.name + self.sex) # # obj_lis = [] # # for i in range(5): # obj_lis.append(Person('alex',i,'nan')) # # print(set(obj_lis)) #set 去重 依赖于__hash__;__eq__
#面试题
""" 有一个列表[11, 2, 3, 3, 7, 9, 11, 2, 3],去重并且保持原来的顺序. """ l1 = [11, 2, 3, 3, 7, 9, 11, 2, 3] ret = list(set(l1)) print(ret) ret.sort(key=l1.index) # 按值在l1中的索引进行排序 print(ret) l2 = [ {"name": "alex", "age": 36}, {"name": "GoldBoss", "age": 30}, {"name": "xiaoyima", "age": 18} ] #内置函数与匿名函数的结合 l2.sort(key=lambda x: x["age"]) print(l2)
去除多余嵌套的列表
list1 = [11, [22, 3], [4, ], [55, 66], 8, [9, [7, [12, [34, [26]]]]]] # 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8]
list1 = [ 8, [9, [7, [12, [34, [26]]]]]] # 去除多余嵌套的列表,得到[11, 22, 3, 4, 55, 66, 8] def f(x): ret = [] for b in x: # 1 if isinstance(b, list):#[2,[3]] for a in f(b): # f(b)递归,直到递归到同一级的列表,比如对于list1来说,最后递归到最内层[26];取最内部的数;然后在 # 一层一层的往上取返回值,添加到列表里面; ret.append(a) # pass # f(b) 没有拿取递归的返回值; else: ret.append(b) return ret # def func(x): # return [a for b in x for a in func(b)] if isinstance(x, list) else [x] ret = f(list1) # ret = func(list1) print(ret) #isinstance(obj,class) #来判断这个obj的类型是否为class ,类似与type()
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步