003-分支和循环的综合应用
一、基础题
- 使用while循环输出 0~100内所有3的倍数。
# 方法一:
x = 0
while x <= 100:
print(x)
x += 3
# 方法二:
num = 0
while True:
print(num)
num += 3
if num > 100:
break
- 使用while循环输出0~100内所有的偶数。
x = 0
while x <= 100:
print(x)
x += 2
二、进阶题
-
使用循环计算
1*2*3*4*...*10
的结果。result = 1 for x in range(1, 11): result *= x print(result)
-
统计100以内个位数是2并且能够被3整除的数的个数。
count = 0 for x in range(2, 101, 10): if x % 3 == 0: count += 1 print(count)
-
输入任意一个正整数,求他是几位数?
num = int(input('请输入一个正整数:')) count = 0 while True: num //= 10 count += 1 if num == 0: break print(f'该正整数是{count}位数')
-
打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是⼀个⽔仙花数,因为
1³ + 5³ + 3³
等于 153。for x in range(100, 1000): ge = x % 10 shi = x // 10 % 10 bai = x // 100 if ge ** 3 + shi ** 3 + bai ** 3 == x: print(x)
三、挑战题
-
判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)
n = int(input('请输入一个数: ')) for x in range(2, n): if n % x == 0: print(f'{n}不是素数') else: print(f'{n}是素数')
-
求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)
n = int(input('请输入一个任意正整数:')) n1 = n2 = 1 current = '' for x in range(3, n + 1): current = n1 + n2 n1, n2 = n2, current print(current)
-
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列
for i in range(1, 10): print('') for j in range(1, i + 1): print(f'{j} x {i} = {i * j}\t', end='')
-
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)
# 一百匹马: 大马 + 中马 + 小马 = 100 # 一百担货: 3 * 大马 + 2 * 中马 + 小马 / 2 = 100 # 假设 a: 大马 b: 中马 c: 小马 for a in range(1, 100 // 3 + 1): for b in range(1, 100 // 2 + 1): c = 100 - (a+b) if a + b + c == 100 and 3 * a + 2 * b + c / 2 == 100: print(f'有{a}匹大马,{b}匹中马,{c}匹小马')