python练习100例(十九 — 二十二)

本文包含多个编程挑战的解决方案,如寻找1000以内的所有完数,计算球在第10次落地时的总距离及反弹高度,解决猴子吃桃问题,以及通过排除法确定乒乓球比赛配对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 例十九:一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程找出1000以内的所有完数。
for i in range(2,1001):
    arr=[]               #arr和sum_arr两个变量必须定义循环内,每当i变化时,两个重新定义
    sum_arr = 0
    for j in range(1,i):
        if(i%j==0):
            arr.append(j)
            sum_arr+=j
    if(sum_arr==i):
        print(i)
        print(arr,end='\n')
  1. 例20:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
def fun(n):
    arr=[]
    hight = 100.0
    sum_hight = 100
    if(int(n)!=n or n<0):
        return '输入错误!'
    if(n==1):
        print('在第一次落地后,共经过100米')
    else:
        for i in range(0, n):
            hight = hight/2
            arr.append(hight)
    for j in range(0,len(arr)):
        sum_hight = sum_hight + arr[j]*2
    print('第%d次落地时,共经过%f米,反弹%f米'%(n,sum_hight,arr[n-1]))
  1. 例二十一:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
x = 1
sum_arr = 0
for i in range(9):         #进行9次运算
    tmp = (x + 1)*2        #倒着进行计算,第九天的桃子是第十天加上1后的结果乘以2,以此类推
    x = tmp
print(tmp)
  1. 例二十二:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
for i in range(ord('x'),ord('z') + 1):          #i控制的是a的对手,j控制的是b的对手,k控制的是c的对手
    for j in range(ord('x'),ord('z')+1):
        if(i!=j):      #a和b的对手不能重合
            for k in range(ord('x'),ord('z')+1):
                if((i != k) and (j != k)):    #c的对手不能和a或b重合
                    if((i != ord('x')) and (k != ord('x')) and (k != ord('z'))):    #题目中的添加条件
                        print('a的对手是%s,b的对手是%s,c的对手是%s'%(chr(i),chr(j),chr(k)))
  1. ord('x') #将字符转换为 ASCII 数值 chr(120) #将字符转换为 ASCII 字符串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值