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