Python 之循环案例

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))
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值