执行结果:
需求:最多允许猜三次,猜对了就退出程序
age=38foriinrange(3):guess=int(input("猜测的年龄:"))if(guess>age):print("猜大了")elif(guess 打印50-100间的奇数 foriinrange(50,100):if(i%2==1):print(i) 打印偶数 foriinrange(50,100):if(i%2==0):print(i) 这里写了一个不是很灵活的冒泡排序,本质也是使用嵌套循环去完成的 number=[6,7,4,2,1,3,5]foriinrange(5):forjinrange(6):if(number[j]>number[j+1]):tmp=number[j]number[j]=number[j+1]number[j+1]=tmpprint(number) 我们这里写一个打印楼层的小程序 需求:一栋楼有5层,每层2间房,要求把本楼所有的房间号都打印一遍。 foriinrange(1,6):forjinrange(1,3):print(f"{i}层-{i}0{j}室") 我们现在需求改一下,遇到第三层时,不打印任何房间号,其他层都打印 continue的语法作用是,只要程序一遇到continue,本次循环就不继续了,直接进入下一次循环 foriinrange(1,6):forjinrange(1,3):ifi==3:continueprint(f"{i}层-{i}0{j}室") break的语法作用是,只要程序遇到break,就会结束当前这个循环,注意如果是多层嵌套循环,只结束当前这一层的循环。 foriinrange(1,6):forjinrange(1,3):ifi==3:continue#跳过第三层,从第四层开始ifi==2andj==2:break#当dao2层2室的时候直接退出二层循环。从三层开始走print(f"{i}层-{i}0{j}室") 打印这样的三角形 * ** *** **** ***** #一种方法foriinrange(1,6):print("*"*i)foriinrange(4,0,-1):print("*"*i)#第二种方法n=10foriinrang(n):ifi<5:print(i*"*")else:print((n-i)*"*") 与for必须指定循环多少次不一样的是,while循环的次数可以是不定的,只要条件满足就可以永远循环下去。 while条件:#只要条件为真,就不断循环print(xxxxx) count=0whileTrue:print(f"第{count}次循环")count+=1 count=0whilecount<10:print(f"第{count}次循环....")count+=1 foriinrange(1,10):print()forjinrange(1,i+1):print(f"{i}*{j}={i*j}",end="") 需求:允许用户猜三次,若还不对,钙塑它,你真笨,还想继续猜吗?如果用户选择yes,就让他继续,如果选择no就退出 guess_age=30guess_num=0whileTrue:guess_num+=1ifguess_num<=3:guess=int(input("请输入猜的数字:"))ifguess 可以残生指定范围内的随机数,字符串等 importrandom#导入random模块a=random.choice("abcdefghigk")#参数也可以是一个列表print(a)s="asdfghjklzxcv"s=random.sample(s,5)#从数据源s中随机取出5个值print(s)i=random.randint(1,100)#打印一个随机数print(i) importstringa=string.ascii_letters#大小写全部字符print(a)s=string.ascii_uppercase#大写字符print(s)i=string.ascii_lowercase#小写字符print(i)j=string.punctuation#打印特殊字符print(j)g=string.digits#打印数字print(g) 需求:允许用户最多选3次 每次放出20个车牌公用户选择 3车牌[A-Z]-[xxxxx],可以是数字和字母在组合 importrandomimportstringnum_lsit=[]tmp=(string.digits+string.ascii_uppercase)print(random.sample(tmp,5))count=3whilecount>0:count-=1num_lsit=[]foriinrange(20):car_code=random.choice(string.ascii_uppercase)car_num=f"京{car_code}-{''.join(random.sample(tmp,5))}"num_lsit.append(car_num)print(i,car_num)choice=input("choice:").strip()ifchoiceinnum_lsit:exit(f"恭喜你选购成功,您的车牌为{choice}")else:print(f"未选中,还有{count}次机会") 需求:张三公司有300员工,年会抽奖,奖项如下 一等奖3名,泰国五日游 二等奖6名,iphon手机 三等奖,小玩具一个 每个员工只能限一次。 importrandomimportstringa=[]forjinrange(1,301):a.append(j)#建立一个员工的地址池###########抽一等奖##############print("抽一等奖,三等奖是泰国五日游")print("得奖员工:",end="")foryiinrange(3):tmp=random.choice(a)#随机去一个员工print(tmp,end="")a.remove(tmp)#因为每个员工只能拿一个奖,所以删除员工池以得奖的用户print("")#另起一行###########抽二等奖###############print("抽二等奖,二等奖是一部iphon手机")print("得奖员工:",end="")forerinrange(7):tmp=random.choice(a)print(tmp,end="")a.remove(tmp)print("")############抽三等奖##############print("抽三等奖,三等奖是小玩具一个")print("得奖员工:",end="")forsaninrange(11):tmp=random.choice(a)print(tmp,end="")a.remove(tmp)