欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

荐 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