python算法:爱因斯坦阶梯

一,for循环:

1,功能:重复执行同一段代码
语法:

for index in range(n): 
    # 循环体代码

index : 用来依次接收可迭代对象中的元素的变量名
range()函数:负责返回整数序列

流程图:

2,应用

range可以同时指定start 和stop,用for遍历并打印

1
2
3
4
# 指定 start和stop
# print的参数 end=" " 用来使打印不换行
for num in range(3,9):
    print(num, end=" ")

运行结果:

3 4 5 6 7 8 

二,while循环:

1,功能:重复执行同一段代码
语法:

while 条件表达式:
    # 循环体

 当条件表达式的返回值为真时,则执行循环体中的语句,
执行完毕后,重新判断条件表达式的返回值,
如果表达式返回的结果为假,则退出循环体

2,流程图:

3,打印从1到10

1
2
3
4
5
# 打印从1到10
n = 1
while n <= 10:
    print(n, end=" ")
    n += 1

运行结果:

1 2 3 4 5 6 7 8 9 10 

说明:刘宏缔的架构森林—专注it技术的博客,
网址:https://imgtouch.com
本文: https://blog.imgtouch.com/index.php/2024/03/12/python-suan-fa-ai-yin-si-tan-jie-ti/
代码: https://github.com/liuhongdi/ 或 https://gitee.com/liuhongdi
说明:作者:刘宏缔 邮箱: 371125307@qq.com

三,爱因斯坦阶梯问题

1,爱因斯坦曾经出过这样一个数学题,讲的是有一个很长的阶梯,如果每步上跨2 阶,最后只剩 1 阶;每步跨 3 阶,最后剩 2 阶;每步跨5 阶,最后剩 4 阶;每步跨 6 阶,最后剩 5 阶;当每步跨 7 阶时,刚好可以一阶不剩,求这个阶梯共有多少阶?

2,思路:
阶梯的阶数如果整除2会余1,整除3会余2.……以此内推,且这个阶梯数刚好是7的倍数,所以需要循环进行判断某个阶梯数是否满足

四,编码实现

1,for循环

1
2
3
4
5
6
for step in range(7, 1000, 7):  # 台阶数,是7的倍数
    if ((step % 2 == 1) and
            (step % 3 == 2) and
            (step % 5 == 4) and
            (step % 6 == 5)):  # 如果符合条件
        print('阶梯数是:', step)

运行结果:

阶梯数是: 119
阶梯数是: 329
阶梯数是: 539
阶梯数是: 749
阶梯数是: 959

2,while循环

1
2
3
4
5
6
7
8
9
10
step = 7    # 台阶数,是7的倍数
while step < 1000:     # 取1000内的数字
    if ((step % 2 == 1) and
            (step % 3 == 2) and
            (step % 5 == 4) and
            (step % 6 == 5)):     # 如果符合条件
        print('阶梯数是:', step)
        step += 7     # 每次增加7
    else:
        step += 7

运行结果:

阶梯数是: 119
阶梯数是: 329
阶梯数是: 539
阶梯数是: 749
阶梯数是: 959
posted @ 2024-05-15 10:20  刘宏缔的架构森林  阅读(245)  评论(0编辑  收藏  举报