用continue计算100以内奇数和_Python入门19break和continue

69e420acc5aa9b222afc8c0670c48b57.gif

break

break可用于(提前)退出循环

【例】输出指定范围的素数

lower = int(input("输入区间最小值:"))

upper = int(input("输入区间最大值:"))

for num in range(lower,upper + 1):

    # 素数大于 1

    if num > 1:

        for i in range(2,num):

            if (num % i) ==0:

                break

        else: #和for配对的else。如果上面的break执行则不执行此else

            print(num) #输出素数

ed238a621dc5d14d5f73adac57e28857.png

关于else和for配对:

for……break……else……

如果运行了 break,那么就不执行 else;如果没有运行 break,那么就执行 else 语句。

如果 for 的循环体中没有 break 语句,else 语句会执行。

while-else 的用法同理。

以上程序去掉else之后是错误的:

lower = int(input("输入区间最小值: "))

upper = int(input("输入区间最大值: "))

for num in range(lower,upper + 1):

    # 素数大于 1

    if num > 1:

        for i in range(2,num):

            if (num % i) == 0:

                break

        print(num)

区间内的整数都输出了。

【例】求最大公约数

num1=int(input("请输入第一个整数:"))

num2=int(input("请输入第二个整数:"))

flag=0

for i in range(num1,0,-1):

    if((num1%i==0) and (num2%i==0)):

        flag=1

        break

if(flag==1):

    print(f"{num1}和{num2}的最大公约数是{i}")

改写:不用标志flag,改用for……else……

num1=int(input("请输入第一个整数:"))

num2=int(input("请输入第二个整数:"))

for i in range(num1,0,-1):

    if((num1%i==0) and (num2%i==0)):

        print(f"{num1}和{num2}的最大公约数是{i}")

        break

else:

    print(f"{num1}和{num2}的最大公约数是1")

【例】一个列表用来保存学生信息,列表的元素是字典,字典中的键有姓名、年龄等。让用户输入一个名字,然后在列表中查询,如果有这个名字就告诉用户“找到了”,反之告诉用户“没有找到”。

程序一:用标志位编程:

info = [{"name":"小明", "age":15},

     {"name":"小华", "age":17},

     {"name":"小强", "age":16}]

find_name = input("please input a name:")

flag=False

for person in info:

    if person["name"] == find_name:

        flag=True

if flag:

    print("Found it")

else:

    print("Not found")

程序二:改用for……else……编程

info = [{"name":"小明", "age":15},

        {"name":"小华", "age":17},

        {"name":"小强", "age":16}]

find_name = input("please input a name:")

for person in info:

    if person["name"] == find_name:

        print("Found it")

        break

else:

    print("Not found")

【例】判断2~50之间的数是不是质数

for num in range(2,51):

    for i in range(2,num):

        if (num%i)==0:

            print(num,"不是质数,",end='')

            print(i,"乘",num//i,"是",num)

            break

        else:

            print(num,"是质数")

            break

【例】猴子分桃

海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?

i = 0

j = 1

x = 0

while (i < 5):

    x = 4 * j

    for i in range(0, 5):

        if (x % 4 != 0):

            break

        else:

            i += 1

        x = (x / 4) * 5 + 1

    j += 1

print(x)

运行结果:

3121.0

e819036ab9fdd885f04e081ac30d8576.png

continue

continue用于结束本轮循环,继续下一轮循环

【例】累加100以内的奇数和,即1+3+5+7+……+99

sum=0

for i in range(1,101):

    if i%2==0:#计算奇数和

        continue#偶数不加

    sum+=i#加奇数

print(sum)

【例】统计及格者的平均成绩

x=[98,72,80,45,30,89,92,54,48,82,67,76]

sum=0

k=0;

for item in x:

    if(item<60):

        continue

    sum=sum+item

    k=k+1;

if(k!=0):

    print("及格人数",k,"人,平均成绩是",sum/k)

d5921f06d0790646a554599253b7521b.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值