在day05
下创建一个名为12-for-in循环练习
的代码文件
练习一:
求出一个范围内所有的水仙花数
for num in range(100, 1000):
unit = num % 10
dacade = num // 10 % 10
hundred = num // 100
if unit ** 3 + dacade ** 3 + hundred ** 3 ==
print(f'{num}是一个水仙花数')
# else:
# print(f'{num}不是水仙花数
我们得出100~1000之间的水仙花数有四个
练习二:
计算1-100的和
total = 0
for i in range(1, 101):
total += i
print(f'1-100的和为{total}')
练习三:
计算出100的阶乘。阶乘:5的阶乘 = 5! = 5 * 4 * 3 * 2 *1
total = 1
for i in range(1, 101):
total *= i
print(f'100的阶乘为{total}')
PS:
也可以是range(2, 101),但total不能从0开始,
在day05
下创建一个名为14-while循环练习
的代码文件
练习三:
使用while循环计算1-100的和
total = 0
i = 1
while i <= 100:
total += i
i += 1
print(f'1-100的和为{total}')
在day05
下创建一个名为16-练习
的代码文件
练习四:
统计100以内个位数是2并且能够被3整除的数是个数
n = 0
for i in range(10, 101):
if i % 10 == 2 and i % 3 == 0:
n += 1
print(f'个数{n}')
number = 0
for i in range(2, 93, 10):
if i % 3 == 0:
number += 1
print(f'100以内个位数是2并且能够被3整除的数是个数为{number}')
练习五:
输入任意一个正整数,求他是几位数?
num = 123
lenght = 0 # 原始长度为0
while True:
num //= 10 # 赋值
lenght += 1 # 每循环一次,num减少一位数字,实际长度加一
if num == 0:
break # if num == 0将循环停掉
print(f'这是一个{lenght}位数')
n = int(input())
m = 0
while n != 0:
n //= 10
m += 1
print(m)
第六题:
求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34…(这儿的n可以是任意正整数,可以通过输入来确定)
a = 1 # 初始时,第一个数
b = 1 # 初始时,第二个数
# n = 3, result = 2,1 + 1 = 2,一次计算过程算出第三个数
# n = 4,result = 3,1 + 1 = 2,1 + 2 = 3,二次计算过程算出第四个数
# n = 5,result = 5,1 + 1 = 2,1 + 2 = 3,2 + 3 = 5,三次计算过程算出第五个数
# 要算n个数的话,从头到尾,我们需要n-2次计算过程
n = 8 #意味着要做6次计算
for _ in range(n - 2): # for循环计算次数,变量用—_代替
mid = a + b # 初始时,mid = 2
a = b # 把b赋予a,相当于是把a往后挪了一下
b = mid # 依次循环,b的位置也往后挪了一位,直到循环结束
print(f'第{n}个数为{mid}')
第七题:
输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。外层循环表示九九乘法表的行
规律:第一行有一列,第二行有两列,第三行有三列……第九行有九列
列被航控制,意味着行是外层循环(循环9次),列是内层循环
for i in range(1, 10): # 循环执行9次,外层循环表示九九乘法表的行
for j in range(1, i + 1): # 内层循环表示列,列被行控制的
print(f'{i}*{j}={i * j}', end='\t')
# \t转义字符,自带特殊作用,代表键盘上的制表符tab,\t中的t也有table表格的意思,
# 当输出结果类似表格形式时,\t能够起到对其作用。
# 虽然print()不打印任何结果,但是end参数始终在起作用。
print()
第八题:
这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担
,问有大,中,小马各几匹?(可以直接使用穷举法 --> 找极值)
# 使用x、y、z三个变量代表大马、中马、小马
# x + y + z = 100,3 * x + 2 * y + 0.5 * z = 100
# 说明只有两个条件,不能用三元一次方程
for x in range(0, 35): # 假设用的全都是大马,需要34匹,33 * 3 = 99还有1担货
for y in range(0, 51): # 假设用的全都是中马,需要50匹
for z in range(0, 101): # 假设用的全都是小马,需要100匹
if x + y + z == 100 and 3 * x + 2 * y + 0.5 * z == 100:
print(f'大马{x}匹,中马{y}匹,小马{z}匹')