爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若...
第六课课后习题,x = 7
i = 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('在程序限定的范围内找不到答案!')
input()
请问flag 在这里是什么意思, 可以不要 i <= 100吗 flag==1意思就是代表符合题意的阶梯数
可以不要 i <= 100吗
这个不是很明白你的意思{:10_257:}
那你有别的代替方法吗
本帖最后由 小伤口 于 2021-3-8 17:53 编辑
之所以要用flag
因为如果你直接打印符合题意的x话
因为在while循环里所以会一直打印
flag就起到一个中间商的作用让他在while外打印
这样就不会重复了
因为答案不止一个所以要i<100取一个范围 小伤口 发表于 2021-3-8 17:47
flag==1意思就是代表符合题意的阶梯数
可以不要 i
怎么说呢,理论上是可行的
x = 7
i = 1
flag = 0
while i:
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)
break
input()
但是吧,问题就是,万一不存在这个情况,就会一直去运算,进入死循环,直到找到了结果
限定 i<= 100 只是为了避免死循环{:10_245:} Daniel_Zhang 发表于 2021-3-8 17:53
怎么说呢,理论上是可行的
我没运行,我也不清楚{:10_250:} Daniel_Zhang 发表于 2021-3-8 17:53
怎么说呢,理论上是可行的
所以还是不能删呀{:10_245:} 小伤口 发表于 2021-3-8 17:59
所以还是不能删呀
是,但是他说的是删掉 while i <= 100
没说不能加 while True 啊{:10_297:} Daniel_Zhang 发表于 2021-3-8 18:01
是,但是他说的是删掉 while i
哦哦,好像懂了{:10_257:} 原来题目说的是最少呀 这样写是不是好理解一些
flag = 0
for x in range(7 , 700 , 7):
if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
print('阶梯数是:' , x)
flag += 1
if flag == 0:
print('在程序限定的范围内找不到答案!')
input() flag只是一个标记,用来记录你是否找到了你想要的。
不要也可以,例如可以在if条件成立后将flag直接换成打印这个x,一样可以达到目的。
而i<=100
则是框定了一个找寻范围
无论用那种方式只要达到想要的结果就可以
范围这里就可以和前一楼所举例一样改变成为一个for循环
要解决的问题是一样的,只是到达的方法略有不同而已 本帖最后由 hit396 于 2021-12-7 11:37 编辑
yuedong 发表于 2021-3-8 18:22
flag只是一个标记,用来记录你是否找到了你想要的。
不要也可以,例如可以在if条件成立后将flag直接换成打 ...
小白再次追问:
x = 7是什么意思?在程序里有什么作用?试着改了很多数,0也好,超级大的数也好,对运行结果没什么影响
页:
[1]