python一球从100米高度自由落下_Python 100题练习6

这篇博客介绍了两个Python编程问题:一球从100米高度落下,计算第10次落地时的总距离和反弹高度;猴子吃桃问题,通过递归或循环解决桃子数量的递减过程。还讨论了如何解决乒乓球比赛的配对问题,并展示了一些代码实现。

刚刚好不容易写完Q19,不知道怎么回事笨乎没有保存QAQ,这次一定要保存好↖(^ω^)↗

惯例。

原题地址:戳这里

Q20.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?

mA:

def fun():

H = 100*(1.0/2)**10

print('The final height is%.2f'%H)

S = 100

for i in range(1,11):

h = 100*(1.0/2)**i

S += 2*h

print('The total S is%.2f'%S)

oA:

def ball():

times=int(input("Hou many times the ball hit the floor?"))

h=100.0

record=[]

length=100

for i in range(0,times):

h=h/2

record.append(h)

for i in record[:-1]:

length += i*2

print(length)

print(record[-1]

Drifter_y用了一个record[:-1]的从末位开始的循环,可以学习一下。

Q21.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

一不小心看到了答案,答案还真少...应该从中学习的是一种思维。

from math import *

def fun():

for i in range(1,1000):

if i % 2 == 0:

k = 1

while k <= 9:

i = i/2.0 - 1

k += 1

if i == 1:

return i

好的,flag,倒了..我的代码错误。

好的,在电脑上做题我总是理解错题意...非常无语了。

明明是很简单的意思,最后剩下的一个桃子再加上一个桃子都属于剩下的一半桃子的范围,所以是可以乘2的。

x = 1

for i in range(0,9):

x = (x+1)*2

print(x)

再来看看Drifter_y的递归法:

def peach(n):

if n == 1:

return 1

else:

return (peach(n-1)+1)*2

print(peach(10))

这个就是很纯粹的递归思想了。倒叙查看,前一个晚上桃子的数量总是后一个晚上桃子的数量加上1 再乘以2,直到最后一个晚上桃子的数量是1(第十个晚上),将第十个晚上看作数列第一项,即我要推导到第十项,而我们可以知道,第十项可以用第九项来表示,如此迭代,到第一项就 return 到1 了。

相当于else表示的就是数列的递推表达式,表达到最后也就是return 到if的条件,也就是首项了。

感谢评论区里一位朋友@杀死一只扑楞蛾子 提供了另一种方法!

以下是@杀死一只扑楞蛾子 的代码:

将for改成while也可以哒

# -*- coding: utf-8 -*-

x = 1

n = 10

while n > 1:

n = n - 1

x = (x + 1) * 2

print(x)

Q22.两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

枯了...在数学上很容易的问题为什么要用编程来写

一行代码出答案啊哈哈哈哈哈/西皮一下

mA:

print('[(c,y),(a,z),(b,x)]')

好吧...认真地想,万一很多人来配对怎么办...

oA:

def fun():

for i in permutations(['x','y','z'],3):      #枚举出所有xyz的排序

if (i[0]!='x' and i[2]!='x' and i[2]!='z'):  #卡xyz顺序的条件

print("a:%s,b:%s,c:%s" %(i[0],i[1],i[2]))

为什么在我的python shell里找不到permutations这个函数???

我在JupiterNotebook里试也是这样的。。。嘤嘤嘤

Q23. 打印

*

***

*****

*******

*****

***

*

my code(恶意调试最为致命QAQ):

def fun():

print("""\t *

***

*******

***

* """)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值