关于python第六讲
x = 7i = 1
flag = 0
while i <= 100:
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
flag = 1
else:
x = 7 * (i+1) # 根据题意,x一定是7的整数倍,所以每次乘以7
i += 1
if flag == 1:
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')这段求阶梯数的求大神解释一下,有点看不懂 本帖最后由 jackz007 于 2021-1-9 23:15 编辑
x = 7 # 枚举变量 x 赋初值 7
i = 1 # 循环变量 i 赋初值 1
flag = 0 # 找到标志初始化为 0 值
while i <= 100: # 开始循环
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):# 判断 x 是否符合要求
flag = 1 # 是,置找到标志为 1
else: # 否则
x = 7 * (i + 1)# 生成下一个 x 值
i += 1 # 循环变量 i 的数值加 1
if flag == 1: # 根据 flag 的值判断是否有找到这个 x
print('阶梯数是:', x)
else:
print('在程序限定的范围内找不到答案!')
这个代码在开始循环前,先设置 x 的初始值为 7,i 为 1,找到标志 flag 为 0,并设置循环次数为 100 次,进入循环后,先判断 x 是否符合条件,如果不符合,那就生成新的 x 值,继续循环;如果符合,就置 flag = 1,继续循环,每次循环,循环变量 i 的值就加 1,当 i 等于 101 的时候,循环就到达终点。由于找到符合条件的 x 时,x 的值未被改变,所以,在后续的循环中,无论 i 值怎么改变,x 的值会始终保持不变(始终在 if 中转,不会执行到 else 中),直到循环结束。循环结束后,如果 flag 的值是 1,说明是找到了,如果维持原始值 0,那就说明没找到。
改写一下更容易理解
c = 0
for x in range(7 , 701 , 7):
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
print('阶梯数是:', x)
c += 1
if c == 0:
print('在程序限定的范围内找不到答案!')
运行实况
D:\00.Excise\Python>python x.py
阶梯数是: 119
阶梯数是: 329
阶梯数是: 539
D:\00.Excise\Python>
运行这个代码你会发现,其实,在指定的数值范围内,符合条件的阶梯数其实不止一个。 jackz007 发表于 2021-1-9 22:54
这个代码在开始循环前,先设置 x 的初始值为 7,i 为 1,找到标志 flag 为 0,并设置循环次数为...
for x in range(7 , 701 , 7):
上面这个的意思是循环对吧?但是目前貌似还没有学,
为啥填三个数字不是很明白
陈小东 发表于 2021-6-1 16:16
for x in range(7 , 701 , 7):
上面这个的意思是循环对吧?但是目前貌似还没有学,
为啥填三个数字不是 ...
x 从 7 开始,循环到 701 结束,如果没有最后那个 7,那么,每次循环 x 的值增加 1,有了这个 7,每次循环 x 的值增加 7。就是说,循环中,x 的值将会依次等于 7、14、21、28........。
页:
[1]