鱼C论坛

 找回密码
 立即注册
查看: 1534|回复: 4

[已解决]里面flag 啥意思

[复制链接]
发表于 2020-1-12 16:27:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。



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('在程序限定的范围内找不到答案!')
最佳答案
2020-1-13 11:21:57
flag就是一个标记。自己想怎么定义就怎么定义,这个程序里的flag,1表示找到了阶梯数,0表示没有找到阶梯数。
程序有能精简的地方。你的程序不管有没有找到,都会循环100次的。帮你修改了两个版本
第一个版本,只招一个,就不再找了。
print('--------爱因斯坦阶梯题---------')

x = 7#x是7的整数倍,假设x为7
i = 1#每次循环+1,检验

while i <= 100:#当倍数只加到一百以内时执行以下
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
        #假如上面的条件都成立,直接输出
        print('阶梯数是:',x)
        break               #找到了一个,跳出循环
    x = 7 * (i+1)#x加7,查看7的其他倍数
    i += 1#
else:
    print('找不到答案')#指7的一百倍以内找不到答案
第二个版本,在给定的范围(这个程序是700以内)内找出所有的阶梯数
print('--------爱因斯坦阶梯题---------')

x = 7       #x是7的整数倍,假设x为7
i = 1       #每次循环+1,检验
flag=True   #标记,若找到了,则修改标记为False
while i <= 100:#当倍数只加到一百以内时执行以下
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
        #假如上面的条件都成立,直接输出
        print('阶梯数是:',x)
        flag=False      #找到了,修改标记为Flase
    x = 7 * (i+1)#x加7,查看7的其他倍数
    i += 1
if flag:    #查看标记,若没找到,标记为True,若找到了,标记为False
    print('找不到答案')#指7的一百倍以内找不到答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-12 16:32:37 | 显示全部楼层
标志变量吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 16:33:41 | 显示全部楼层
flag 就是一个标志,它表示是否找到阶梯数,初始化为 0。如果找到了阶梯数,则将 flag 设置为 1。最后判断 flag 是否为 1,为 1 表示找到了阶梯数,否则表示没有找到阶梯数。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-1-13 11:21:57 | 显示全部楼层    本楼为最佳答案   
flag就是一个标记。自己想怎么定义就怎么定义,这个程序里的flag,1表示找到了阶梯数,0表示没有找到阶梯数。
程序有能精简的地方。你的程序不管有没有找到,都会循环100次的。帮你修改了两个版本
第一个版本,只招一个,就不再找了。
print('--------爱因斯坦阶梯题---------')

x = 7#x是7的整数倍,假设x为7
i = 1#每次循环+1,检验

while i <= 100:#当倍数只加到一百以内时执行以下
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
        #假如上面的条件都成立,直接输出
        print('阶梯数是:',x)
        break               #找到了一个,跳出循环
    x = 7 * (i+1)#x加7,查看7的其他倍数
    i += 1#
else:
    print('找不到答案')#指7的一百倍以内找不到答案
第二个版本,在给定的范围(这个程序是700以内)内找出所有的阶梯数
print('--------爱因斯坦阶梯题---------')

x = 7       #x是7的整数倍,假设x为7
i = 1       #每次循环+1,检验
flag=True   #标记,若找到了,则修改标记为False
while i <= 100:#当倍数只加到一百以内时执行以下
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6 == 5):
        #假如上面的条件都成立,直接输出
        print('阶梯数是:',x)
        flag=False      #找到了,修改标记为Flase
    x = 7 * (i+1)#x加7,查看7的其他倍数
    i += 1
if flag:    #查看标记,若没找到,标记为True,若找到了,标记为False
    print('找不到答案')#指7的一百倍以内找不到答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2020-1-13 15:03:46 | 显示全部楼层
sunrise085 发表于 2020-1-13 11:21
flag就是一个标记。自己想怎么定义就怎么定义,这个程序里的flag,1表示找到了阶梯数,0表示没有找到阶梯数 ...

详细的很啊 了解了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 03:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表