荐 Python 之循环案例
程序员文章站
2022-06-22 17:41:39
while和for循环案例一、计算器(while循环+哨兵值)需求:输入两个数字和一个运算符,写一个可以循环的计算器,并且利用哨兵值控制循环。代码:#输入两个数字和一个运算符,写一个可以循环的计算器ans = "y" #哨兵值#用哨兵值控制循环(相当于do-while循环,先执行后判断)while ans=="y" or ans=="Y": num1,num2 = eval(input("请输入两个操作数:")) operator = input("请输入运算符...
while和for循环案例
一、计算器(while循环+哨兵值)
需求:
输入两个数字和一个运算符,写一个可以循环的计算器,并且利用哨兵值控制循环。
代码:
#输入两个数字和一个运算符,写一个可以循环的计算器
ans = "y" #哨兵值
#用哨兵值控制循环(相当于do-while循环,先执行后判断)
while ans=="y" or ans=="Y":
num1,num2 = eval(input("请输入两个操作数:"))
operator = input("请输入运算符:")
#将输入的内容组成一个字符串,然后用eval计算
expression = "{} {} {}".format(num1,operator,num2)
#面向对象写法: expression = str.format("{} {} {}",num1,operator,num2)
print(expression + " = " + str(eval(expression)))
ans = input("是否继续输入(y/n)?") #判断是否再次循环
注:用哨兵值控制循环,就像是其它语言中的do-while循环。先执行后判断。
二、累加和累乘(for循环)
需求:
1、计算0-100的累加和。
2、计算0-100的偶数的累加和。
3、计算0-100的奇数的累加和。
4、计算a-b的累加和。
5、输入一个数字计算这个数字的阶乘。
代码:
#累加问题1:0-100的累加和
s = 0
for i in range(0,101):
#可以等价写为:
#for i in range(100,0,-1):
s += i
print(s)
#累加问题2:0-100的偶数和
s = 0
for i in range(0,101,2):
s += i;
print(s)
#累加问题3:0-100的奇数和
s = 0
for i in range(1,101,2):
s += i
print(s)
#计算a-b的累加和
a,b = eval(input("请输入a和b的值:"))
s = 0
for i in range(a, b+1):
s += i
print(s)
#计算阶乘
#如4! = 4*3*2*1 = 1*2*3*4
a = eval(input("请输入一个数字计算其阶乘:"))
s = 1
for i in range(1,a+1):
s *= i
print(s)
三、实现死循环
需求:
1、使用while循环,实现死循环。
2、使用for循环,实现死循环。
代码:
while循环:
while True:
...
...
语句
...
...
for循环:
#使用for来实现死循环
class Infinite: #定义一个可以无限迭代的类
def __iter__(self):
return self
def __next__(self):
return None #每次迭代本类对象的时候,返回None
#死循环
i = 0
for obj in Infinite():
print(i)
i+=1
四、打印月历
需求:
打印1997年7月的月历。7月1日是星期二。
代码:
#打印1997年7月1日(星期二)的月历
day_of_week = 2 #表示星期二(星期一表示的数字为1,星期二为2,星期三为3......)
print("星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日")
print("\t" * (day_of_week - 1),end="")
for i in range(1,32):
if (i + day_of_week - 1)%7==0:
print(i)
else:
print(i,end="\t")
五、猜数字小游戏(break语句的使用)
需求:
玩家输入数字,猜测是否与系统内数字相同,不相同时打印,玩家输入的数字与系统内数字的大小关系的提示语句来引导玩家。在规定次数中猜对数字,给出相应奖励。1次猜出为一等奖;2-3次猜出为二等奖;4-5次猜出为三等奖;5次机会用完,没有猜出没有奖励。
代码:
#猜数字(break语句的使用)
right_money = 1564 #正确的数字
guess_money = 0 #玩家每轮猜测的数字
play_ans = 0 #猜的次数,用来判断最后的奖励等级
flag = 0 #标记有没有在规定次数内猜到数字(1为猜到,0为没有猜到)
for i in range(5):
play_ans += 1
guess_money = eval(input("请输入第{}次猜测的数字:".format(play_ans)))
if guess_money>right_money:
print("大了!")
elif guess_money<right_money:
print("小了!")
else:
print("恭喜你猜对了数字,共猜了{}次!".format(play_ans))
flag = 1
break
if play_ans == 1 and flag == 1:
print("恭喜您获得一等奖!获得3枚金币!")
elif play_ans>1 and play_ans<=3 and flag == 1:
print("恭喜您获得二等奖!获得1枚金币!")
elif play_ans>3 and play_ans<=5 and flag == 1:
print("恭喜您获得三等奖!获得3枚银币!")
else:
print("在规定次数内没有猜到,没有奖励。")
六、计算人数(continue语句的使用)
需求:
循环输入5个玩家的消费,统计消费额低于500的玩家数量。如果消费大于等于500,则跳过,小于500则计数器+1。
代码:
#计算人数(continue语句的使用)
#循环输入5个玩家的消费,统计消费额低于500的玩家数量
#如果消费大于等于500,则跳过,小于500则计数器+1
ans = 0 #计数器
money = 0 #玩家消费额
for i in range(5):
money = eval(input("请输入第{}个玩家的消费金额:".format(i+1)))
if money>=500:
continue
ans += 1
#另一种写法:
#if money < 500:
# ans += 1
print("消费金额大于等于500的玩家有{}个,小于500的玩家有{}个".format(5-ans,ans))
本文地址:https://blog.csdn.net/qq_45856289/article/details/107310848