当前位置:   article > 正文

python中分支与循环的必刷经典例题(附参考答案)

python中分支与循环的必刷经典例题(附参考答案)

python中分支与循环的必刷经典例题(附参考答案

分支与循环在应用时是非常灵活的,可以单独使用,也可以相互嵌套循环使用,而且对于一个问题来讲,就像做一个数学题,虽然答案只有一个,但是解决问题的思路和方法并不是唯一只有一种,可能现在认为最优的解决方式都并非在100年之后还是,最佳的解决算法,所以写程序也是如此,并非有一种思想它就是解决这个问题的最佳方式,而它只是目前在所有算法中最而已。记住,解决一个问题,一定是先采用能解决问题的方法解决它(哪怕当前方法很笨),而后才是在此基础上思考解决此问题更优的方式,不要由于一开始就在思考一个“最佳”的方案才开始解决。

想要学好编程,多加练习是不可或缺的一环,那么,学习分支与循环后(没看过的赶紧打开( 3分钟带你了解Python中分支与循环1),当然也是少不了练习,在这里,我总结了很多在学习分支与循环的必刷的经典例题,一起来看看。可以先试着写一下,参考代码在后面

1.对1到100的求和

2.求1到100之间是3或者5的倍数的整数

3.输入一个非负整数 n ,输出它的阶层n!

4.输入两个正整数 n和 m,找它们的最大公因数

5.使用for 循环打印出下列样式

 *
 **
 ***
 ****
 *****
  • 1
  • 2
  • 3
  • 4
  • 5

6.打印乘法九九表

7.输入n,输出n个斐波拉切数(不知道的赶紧百度百度斐波拉切数)

8.百钱白鸡问题

鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,欲百钱买百鸡,鸡翁、鸡母、鸡雏各几何?
  • 1

用人话讲就是,公鸡五块一只,母鸡三块一只,小鸡一块钱三只,用100块钱买100只鸡,公鸡、母鸡和小鸡各能买多少只?

  1. 输入一个正整数,判断它是不是质数

10.输入10个1-100之间的数,计算这10个数的平均数,找出最大值、最小值

11.猜随机数游戏

机器产生一个随机数(假设在1,100之间),用户每次输入一个数字,当猜对后结束,如果猜7次都没有猜对,输出“智商有待充值”

12.找出100到999之间的水仙花数

各个 位数的立方之和等于这个数本身它就是水仙花数,如153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3

13.数字的反转

例如,用户输入1234,计算机输出4321

14.找出1-10000的完美数

除自身外的所有因子之和等于这个数它就是完美数,如6的因子1,2,3,有1 + 2 + 3 = 6

15.分鱼求和问题

A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5人至少合伙捕到多少条鱼?

16.输入三角形的三条边的长度,如果是三角形,算出它的面积,否则让用户重新输入

(算面积采用海伦公式)

在这里插入图片描述

参考代码:

(不一定最优,有更好的写法留在评论区哦)

1.对1到100的求和

total = 0   # 定义一个变量total来进行和的存储
for i in range(1,101):
    total += i
print(f"1-100的累加和为{total}")
  • 1
  • 2
  • 3
  • 4

2.求1到100之间是3或者5的倍数的整数

for i in range(1,101):
    if i % 3 == 0 or i % 5 == 0:
        print(i)
  • 1
  • 2
  • 3

3.输入一个非负整数 n ,输出它的阶层n!

n = int(input("输入非负整数n:"))   # 接收用户输入的整数
total = 1                         # 用total存储累积
for i in range(2, n + 1):
    total *= i
print(f"{n}的阶层 = {total}")
  • 1
  • 2
  • 3
  • 4
  • 5

4.输入两个正整数 n和 m,找它们的最大公因数

print("输入两个正整数")
n = int(input("输入正整数1:"))
m = int(input("输入正整数2:"))
min = 0
if m > n:
    min = n
else:
    min = m
for i in range(min,0,-1):
    if n % i == 0 and m % i == 0:
        print(f"它们最大公因数为{i}")
        break
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

还有一种更简单的求法,效率更高的算法是欧几里得算法,参考代码如下(看不懂也没有关系):

n = int(input("输入正整数1:"))
m = int(input("输入正整数2:"))
m, n = max(m, n), min(m, n)# 用 max函数找出m,n之间的最大值,用 min函数找出m,n之间的最小值
while m % n != 0:
    m, n = n, m - n
print(f"最大公因数为{n}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

5.使用for 循环打印出下列样式

 *
 **
 ***
 ****
 *****
  • 1
  • 2
  • 3
  • 4
  • 5
for i in range(1,6):
    for j in range(1, i + 1):
        print("*", end='')
    print()
  • 1
  • 2
  • 3
  • 4

更简单的写法

n = int(input("输入n"))
for i in range(1,n + 1):
	print(f"{i} "* i)
  • 1
  • 2
  • 3

6.打印乘法九九表

n = int(input("输入n"))  # 输入·n = 9
for i in range(1, n + 1):
    for j in range(1, i + 1):
        print(f"{j} * {i} = {i * j}", end = "\t") # 用\t可以将每一列对齐
    print()
  • 1
  • 2
  • 3
  • 4
  • 5

7.输入n,输出n个斐波拉切数(不知道的赶紧百度百度斐波拉切数)

n = int(input("输入n"))
a = 1
b = 1
if n == 1:
    print(a)
else:
    print(a, b, end=" ")
    for _ in range(2,n):   # 循环变量用不上时用 _
        c = a + b
        print(c, end=' ')
        a = b
        b = c
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

8.百钱白鸡问题

鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,
欲百钱买百鸡,鸡翁、鸡母、鸡雏各几何?
  • 1
  • 2

用人话讲就是,公鸡五块一只,母鸡三块一只,小鸡一块钱三只,用100块钱买100只鸡,公鸡、母鸡和小鸡各能买多少只?

for x in range(21):                      # 公鸡的范围在0-21只之间
    for y in range(34):                  # 母鸡的范围在0-33只之间
        z = 100 - x - y                  # 小鸡的只数等于100-x-y
        if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
            print(x, y, z)
  • 1
  • 2
  • 3
  • 4
  • 5

9.输入一个正整数,判断它是不是质数

int1 = int(input("输入一个正整数"))
flag = True
for i in range(2,int1):
    if int1 % i == 0:
        flag = False
        break
if flag and int1 > 1:
    print(f"{int1}是质数")
else:
    print(f"{int1}不是质数")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

10.输入10个1-100之间的数,计算这10个数的平均数,找出最大值、最小值

max1 = 0
min1 = 101   # 比100大就行
total = 0
count = 0
while count < 10:
        int1 = int(input("请输入10个正整数,每次输入一个后回车"))
        if int1 < 1 or int1 > 100:
            print("无效输入")
            continue
        count += 1
        # 判断最大值
        if int1 > max1:
            max1 = int1
        # 判断最小值
        if int1 < min1:
            min1 = int1
        # 计算平均值
        total += int1
print(f"平均值为{total/10}, 最小值为{min1},最大值为{max1}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

11.猜随机数游戏

机器产生一个随机数(假设在1,100之间),用户每次输入一个数字,当猜对后结束,如果猜7次都没有猜对,输出“智商有待充值”

import random                      # 导入随机模块,不知道先跳过,只要知道用来产生随机数就行
ran1 = random.randrange(1,101)     # 产生一个1-100之间的随机整数
count = 0
while True:
    count += 1
    # 用户输入一个数
    guess =int(input("输入一个1,100间的整数"))
    # 判断两个数之间的关系
    if guess > ran1:
        print("小一点")
    elif guess < ran1:
        print("大一点")
    else:
        print("猜对了")
        break
if count > 7:
    print("智商余额不足")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

12.找出100到999之间的水仙花数

各个 位数的立方之和等于这个数本身它就是水仙花数,如153 = 1 ^ 3 + 5 ^ 3 + 3 ^ 3

bit = 0
ten = 0
hundred_bit = 0
t = 0
for i in range(100, 1000):
    bit = i % 10
    hundred_bit = i // 100
    t = bit ** 3 + ten ** 3 + hundred_bit ** 3
    ten = (i % 100) // 10
    if t == i:
        print(i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

13.数字的反转

例如,用户输入1234,计算机输出4321

total = 0
number = int(input("请输入一个数字"))
while number > 0:
    a = number // 10
    b = number % 10
    total = total * 10 + b
    number = a
print(total)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

改进

total = 0
number = int(input("请输入一个数字"))
while number > 0:
    total = total * 10 + number % 10
    number //= 10
print(total)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

14.找出1-10000的完美数

除自身外的所有因子之和等于这个数它就是完美数,如6的因子1,2,3,有1 + 2 + 3 = 6

for i in range(1,10000):
    j = 1
    sum1 = 0
    while j < i:
        if i % j == 0:
            sum1 += j
        j += 1
    if sum1 == i:
        print(i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

改进算法

for i in range(2,10000):
    sum1 = 1
    for j in range(2, int(i ** 0.5) + 1):
        if i % j == 0:
            sum1 += j
            if j != i // j:
                sum1 += i // j
    if sum1 == i:
        print(i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

15.分鱼求和问题

A、B、C、D、E这5个人合伙夜间捕鱼,凌晨时都已经疲惫不堪,于是各自在河边的树丛中找地方睡着了。第二天日上三竿时,A第一个醒来,他将鱼平分为5份,把多余的一条扔回河中,然后拿着自己的一份回家去了;B第二个醒来,但不知道A已经拿走了一份鱼,于是他将剩下的鱼平分为5份,扔掉多余的一条,然后只拿走了自己的一份;接着C、D、E依次醒来,也都按同样的办法分鱼。问这5人至少合伙捕到多少条鱼?(提示:枚举法)

fish = 1      # fish 一定等于5 x + 1条
while True:
    flag = True
    # 判断是否够分
    total = fish
    for _ in range(5):
        if (total - 1) % 5 == 0:
            total = (total - 1) // 5 * 4
        else:
            flag = False
            break
    if flag:
        print(f"至少有{fish}条鱼)
        break
    fish += 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

改进

fish = 6      # fish 一定等于5 x + 1条
while True:
    flag = True
    # 判断是否够分
    total = fish
    for _ in range(5):
        if (total - 1) % 5 == 0:
            total = (total - 1) // 5 * 4
        else:
            flag = False
            break
    if flag:
        print(f"至少有{fish}条鱼)
        break
    fish += 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

16.输入三角形的三条边的长度,如果是三角形,算出它的面积,否则让用户重新输入

(算面积采用海伦公式)
在这里插入图片描述

while True:
    # 输入三条边
    a = int(input("输入第一条边的值"))
    b = int(input("输入第2条边的值"))
    c = int(input("输入第3条边的值"))
    # 判断是否是三角形
    if a + b > c and b + c > a and c + a > b:
        p = (a + b + c)/2
        s = (p * (p-a) * (p - b) * (p - c)) ** 0.5
        print(f"是三角形,面积为{s}")
        break
    else:
        print("不是三角形,请重新输入")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这么一份经典的python分支与循环练习题,还不赶紧收藏起来!

如果对你有帮助,不要忘记点赞评论关注加收藏哦

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号