Python4级,看一下

是信息学鼻血女别人媳妇彼此付出比日常别不谢不谢性别西北西北行不行诶

img

img


  此题目为纯纯的数学小题,纸张对折即2的次幂。纸张一次对折变二层,二次对折变四层,每层纸厚0.1毫米,每次对折后将纸张堆叠厚度与“珠穆朗玛峰的高度为8833340毫米”比对,直到超过,输出记录下的对折纸张次数即可。


  此题目循环对折次数不确定,选择 while 循环比较适宜。停止循环对折的判定为“对折纸张总厚度超过珠峰高度”。
  • 顺序编程

mount_qomolangma = 8833340 # 珠穆朗玛峰高度 8833340 毫米。
paper = 0.1 # 纸张厚度 0.1 毫米。
result = 0 # 对折次数初值。

while paper < mount_qomolangma:
    paper = paper*2 # 对折纸张厚度。
    result += 1 # 累加对折次数

print(f"\n\n{' 对折纸张厚度超过珠峰 ':~^40}\n\n{'对折纸张次数:':>20}{result}\n\n{'':~^50}")
  • 代码运行效果截屏图片

img


  • 函数式编程代码

#!/sur/bin/nve python
# coding: utf-8

def compute(mount: int, paper: float) -> int:
    ''' 对折纸张厚度,直到超过珠峰,输出对折次数 '''
    result = 0 # 对折次数初值。
    
    while paper < mount: # 循环对折。
        paper *= 2 # 对折纸张厚度。
        result += 1 # 累加对折次数

    return result # 纸张厚度超过珠峰,返回对折次数。


if __name__ == '__main__':
    mount_qomolangma = 8833340 # 珠穆朗玛峰高度 8833340 毫米。
    paper = 0.1 # 纸张厚度 0.1 毫米。
    print(f"\n\n{' 对折纸张厚度超过珠峰 ':~^40}\n\n{'对折纸张次数:':>20}{compute(8833340, 0.1)}\n\n{'':~^50}")
  • 代码运行效果截屏图片

img


  • 2幂次方 函数式编程写法

# 2 的幂次方写法
def compute(mount: int, paper: float) -> int:
    ''' 对折纸张厚度,直到超过珠峰,输出对折次数 '''
    result = 18 # 对折次数初值。
    
    while paper < mount: # 循环对折。
        result += 1 # 累加对折次数
        paper = 0.1 * (2 ** result) # 对折纸张厚度。
        #input((result, paper)) # 打印实时对折纸张次数和折纸堆叠厚度。调试用语句。

    print(f"\n\n{'珠峰高:':>18}{mount/100000} km\n{'对折纸张厚度:':>15}{paper/100000} km")
    return result # 返回2的幂次方数。


if __name__ == '__main__':
    mount_qomolangma = 8833340 # 珠穆朗玛峰高度 8833340 毫米。
    paper = 0.1 # 纸张厚度 0.1 毫米。
    print(f"\n\n{' 对折纸张厚度超过珠峰 ':~^40}\n\n{'对折纸张次数:':>20}{compute(mount_qomolangma, paper)}\n\n{'':~^50}")
  • 代码运行效果截屏图片

img