python 解决数学相关问题 实现代码

#题目:纸厚0.08mm,折几次可以达到珠穆朗玛峰8848.13米的高度
m_height=8848.13*1000
z_height=oldz_height=0.08
#计数器
count=0
#利用循环方法1:
while z_height<m_height:
    z_height*=2
    count+=1
    
#利用死循环方法2:
# while True:
#     z_height*=2
#     count+=1
#     if z_height>=8848.13*1000:
#         print(f'这张厚{oldz_height}mm的纸,需要折{count}次,才能达到珠穆朗玛峰{m_height/1000}m的高度')
#         break
print(f'这张厚{oldz_height}mm的纸,需要折{count}次,才能达到珠穆朗玛峰{m_height/1000}m的高度')
#求1-100能被7或者3整除,但是又不能同时被7和3整除的个数
count=0
for i in range(1,101):
    if (i%7==0 or i%3==0) and (i%21!=0):
        count+=1
        print(i,end='\t')
print(f'----------{count}')
#1,2,3,4这四个数能组成多少个三位数,并打印出来
count=0
for b in range(1,5):
    for s in range(1,5):
        for g in range(1,5):
            if b!=s and s!=g and b!=g:
                count+=1
                print(f'{b}{s}{g}',end='\t')
print(f'\n有1,2,3,4这四个数能组成{count}个三位数')
#有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.......求出这个序列的前20项之和
#一个数
total=0
#后一个的分子是前一个数的分母+分子
f_z=1
f_m=2
for i in range(1,21):
    total+=f_m/f_z
    print(f'{f_m}/{f_z}', end='\t')
    f_m,f_z=(f_z+f_m),f_m
print(f'\n序列:2/1,3/2,5/3,8/5,13/8,21/13.......前20项之和是{total:.2f}')
#公园里面有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子发现只剩下一个桃子,问桃子原来有多少个?
peach=1
for e in range(6,0,-1):
    peach=(peach+1)*2
print(peach)
#石头剪刀布游戏:0表示石头,1表示剪刀,2表示布;系统随机生产0-2任意数,用户输入0-2任意数,验证输赢,问继续玩输入yes 不玩了输入no,输入其他显示重新输入yes 或者No
import random
count=0
while True:
    sys_num = random.randint(0, 2)
    user_num = random.randint(0, 2)
    if (user_num-sys_num) in (-1,2):
        count+=1
        print(f'在第{count}局赢了')
        while True:
            answer=input('请输入yes or no \n')
            if answer in ('yes','no'):
                break
            else:
                print('输入错误')
        if answer=='no':
            print('游戏结束')
            break
        else:
            print('游戏重新开始')
            count=0
    elif user_num==sys_num:
        count += 1
        print(f'第{count}局平局')
    else:
        count += 1
        print(f'第{count}局输了')
#比较两个数的大小,大返回1,小返回-1,相同返回0
def compare(a,b):
    # if a>b:
    #     return 1
    # elif a<b:
    #     return -1
    # else:
    #     return 0
    return (a>b)-(a<b)#利用布尔类型的运算,真1假0

#判断两个数是否相等
def is_equal(a,b):
    # if a==b:
    #     return True
    # else:
    #     return False
    return a==b
#匿名函数lambda
f=lambda a,b:a==b

 

posted on 2023-01-09 16:33  至清无物  阅读(261)  评论(0编辑  收藏  举报