鱼小七 发表于 2020-6-9 21:52:37

课后题中遇到的困难

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('在程序限定的范围内找不到答案!')

flag=0为什么要有这一步啊?
flag是什么意思?

Hello. 发表于 2020-6-9 21:54:32

本帖最后由 Hello. 于 2020-6-9 21:56 编辑

标志性变量
当 flag == 1 时打印

它本身是旗帜的意思,可增加程序可读性

Twilight6 发表于 2020-6-9 22:25:50

flag=0为什么要有这一步啊?
用于初始化变量,为后续代码使用做准备,比如说如果你没有设置这个初始值,而且你判断不到爱因斯坦阶梯,也就导致if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):
      flag = 1
这串代码无法成立,当判断到:if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')这一步时,就会因为你 flag 没有定义而报 NameError 的错误,flag 没有定义!

所以这里先初始化了flag,就是用于怕判断如果找不到爱因斯坦阶梯就使得判断条件不成立,执行else 的代码块

flag 英文含义就是个旗的意思,经常看剧都会说 立flag 就是说的这个,在程序中只是个普通的变量名,便于阅读代码,你也可以改成你喜欢的变量名,没实际含义

Congratulate 发表于 2020-6-10 17:40:29

开局不是赋值一个flag=0么,其实flag在程序中就是个变量名,把他换成abcde都可以,规范一点方便可读

冰河星云 发表于 2020-6-10 20:38:14

初始化变量,到后面用
页: [1]
查看完整版本: 课后题中遇到的困难