鱼C论坛

 找回密码
 立即注册
查看: 751|回复: 2

[已解决]零基础学习python第6讲疑问

[复制链接]
发表于 2022-2-26 10:58:46 | 显示全部楼层 |阅读模式

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

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

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) 
    i += 1

if flag == 1:
    print('阶梯数是:', x)
else:
    print('在程序限定的范围内找不到答案!')
最佳答案
2022-2-26 11:27:31
本帖最后由 isdkz 于 2022-2-26 12:06 编辑

x = 7    # 长阶梯的阶数
i = 1    # 阶数的倍速,因为长阶梯每步上 7 阶一阶不剩,所以长阶梯的阶数肯定是 7 的整数倍
flag = 0  # 标志位,用来标志有没有满足条件的阶梯数

while i <= 100:  # 设置一个范围,长阶梯的阶数最多为 7 的 100 倍
    # 满足这些条件:若每步上2阶,最后剩1阶(模2余1);若每步上3阶,最后剩2阶(模3余2);若每步上5阶,最后剩4阶(模5余4);若每步上6阶,最后剩5阶(模6余5);
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):   # 一旦有 x 满足条件,条件语句就不会再进入else对阶梯数进行加倍,直到循环结束,所以可以保证满足条件的阶梯数为最小满足的阶梯数,既然如此,实际上一旦有满足条件的,就没有必要往下循环了,你可以在 if 里面加个 break

       # 则将标志位置为 1 ,表示有满足条件的阶梯数
        flag = 1

        break      # 这里可以加个 break
    # 否则
    else:

        # 将阶梯数加倍,用于作下一步判断
        x = 7 * (i+1)

    # 阶梯数已经加倍了,将加倍后的倍数赋值回 i
    i += 1


# 如果标志位为 1 ,说明有满足条件的阶数,打印出阶梯数
if flag == 1:
    print('阶梯数是:', x)

# 否则 ,说明没有满足条件的阶数,提示指定范围内没有答案
else:
    print('在程序限定的范围内找不到答案!')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-26 11:27:31 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-2-26 12:06 编辑

x = 7    # 长阶梯的阶数
i = 1    # 阶数的倍速,因为长阶梯每步上 7 阶一阶不剩,所以长阶梯的阶数肯定是 7 的整数倍
flag = 0  # 标志位,用来标志有没有满足条件的阶梯数

while i <= 100:  # 设置一个范围,长阶梯的阶数最多为 7 的 100 倍
    # 满足这些条件:若每步上2阶,最后剩1阶(模2余1);若每步上3阶,最后剩2阶(模3余2);若每步上5阶,最后剩4阶(模5余4);若每步上6阶,最后剩5阶(模6余5);
    if (x%2 == 1) and (x%3 == 2) and (x%5 == 4) and (x%6==5):   # 一旦有 x 满足条件,条件语句就不会再进入else对阶梯数进行加倍,直到循环结束,所以可以保证满足条件的阶梯数为最小满足的阶梯数,既然如此,实际上一旦有满足条件的,就没有必要往下循环了,你可以在 if 里面加个 break

       # 则将标志位置为 1 ,表示有满足条件的阶梯数
        flag = 1

        break      # 这里可以加个 break
    # 否则
    else:

        # 将阶梯数加倍,用于作下一步判断
        x = 7 * (i+1)

    # 阶梯数已经加倍了,将加倍后的倍数赋值回 i
    i += 1


# 如果标志位为 1 ,说明有满足条件的阶数,打印出阶梯数
if flag == 1:
    print('阶梯数是:', x)

# 否则 ,说明没有满足条件的阶数,提示指定范围内没有答案
else:
    print('在程序限定的范围内找不到答案!')

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-26 20:02:03 | 显示全部楼层
谢谢大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 03:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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