赞
踩
分支与循环
在应用时是非常灵活的,可以单独使用,也可以相互嵌套循环使用,而且对于一个问题来讲,就像做一个数学题,虽然答案只有一个,但是解决问题的思路和方法并不是唯一只有一种,可能现在认为最优的解决方式都并非在100年之后还是,最佳的解决算法,所以写程序也是如此,并非有一种思想它就是解决这个问题的最佳方式,而它只是目前在所有算法中最而已。记住,解决一个问题,一定是先采用能解决问题的方法解决它(哪怕当前方法很笨),而后才是在此基础上思考解决此问题更优的方式,不要由于一开始就在思考一个“最佳”的方案才开始解决。
想要学好编程,多加练习是不可或缺的一环,那么,学习分支与循环后(没看过的赶紧打开( 3分钟带你了解Python中分支与循环1),当然也是少不了练习,在这里,我总结了很多在学习分支与循环的必刷的经典例题,一起来看看。可以先试着写一下,参考代码在后面
1.对1到100的求和
2.求1到100之间是3或者5的倍数的整数
3.输入一个非负整数 n ,输出它的阶层n!
4.输入两个正整数 n和 m,找它们的最大公因数
5.使用for 循环打印出下列样式
*
**
***
****
*****
6.打印乘法九九表
7.输入n,输出n个斐波拉切数(不知道的赶紧百度百度斐波拉切数)
8.百钱白鸡问题
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,欲百钱买百鸡,鸡翁、鸡母、鸡雏各几何?
用人话讲就是,公鸡五块一只,母鸡三块一只,小鸡一块钱三只,用100块钱买100只鸡,公鸡、母鸡和小鸡各能买多少只?
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}")
2.求1到100之间是3或者5的倍数的整数
for i in range(1,101):
if i % 3 == 0 or i % 5 == 0:
print(i)
3.输入一个非负整数 n ,输出它的阶层n!
n = int(input("输入非负整数n:")) # 接收用户输入的整数
total = 1 # 用total存储累积
for i in range(2, n + 1):
total *= i
print(f"{n}的阶层 = {total}")
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
还有一种更简单的求法,效率更高的算法是欧几里得算法
,参考代码如下(看不懂也没有关系):
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}")
5.使用for 循环打印出下列样式
*
**
***
****
*****
for i in range(1,6):
for j in range(1, i + 1):
print("*", end='')
print()
更简单的写法
n = int(input("输入n"))
for i in range(1,n + 1):
print(f"{i} "* i)
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()
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
8.百钱白鸡问题
鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,
欲百钱买百鸡,鸡翁、鸡母、鸡雏各几何?
用人话讲就是,公鸡五块一只,母鸡三块一只,小鸡一块钱三只,用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)
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}不是质数")
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}")
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("智商余额不足")
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)
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)
改进
total = 0
number = int(input("请输入一个数字"))
while number > 0:
total = total * 10 + number % 10
number //= 10
print(total)
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)
改进算法
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)
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
改进
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
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("不是三角形,请重新输入")
这么一份经典的python分支与循环练习题,还不赶紧收藏起来!
如果对你有帮助,不要忘记点赞评论关注加收藏哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。