python函数知识的题解

1、计算1+2+4+..+100的和

def sum_n(n):
    sumall=1
    for i in range(2,n+1,2):
        sumall=sumall+i
    return sumall
n=int(input('输入正整数n:'))
print(f'1+2+4+..+{n}={sum_n(n)}')

2、从键盘输入一个字符串,直到回车结束,统计字符串中的大小写英文字母各有多少个

def tongjidaxie(s):
    daxie=0
    for i in s:
        if i>'A' and i<'Z':
            daxie=daxie+1
    return daxie
        
def tongjixiaoxie(s):
    xiaoxie=0
    for j in s:
        if j>'a' and j<'z':
            xiaoxie=xiaoxie+1
    return xiaoxie
s=input('请输入一个字符串:')
print(f'字符串中大写字母有{tongjidaxie(s)}个')
print(f'字符串中小写字母有{tongjixiaoxie(s)}个') 

3、求一个序列2/1,3/2,5/3,8/5....求前20项之和

def sum_adivb():
    fenzi=2
    fenmu=1
    sumall=0
    for i in range(20+1):
        sumall=sumall+fenzi/fenmu
        temp=fenmu
        fenmu=fenzi
        fenzi=fenzi+temp
    return sumall

print(f'前20项之和是:{sum_adivb()}')

4、输入若干同学的成绩,计算平均成绩,输入成绩为负或大于100时结束

def count_pingjunchengji():
    s=0
    n=0
    while True:
        m=float(input('输入成绩:'))
        if m>100 or m<0:
            break
        s=s+m
        n=n+1
    m=s/n
    return m
ava=count_pingjunchengji()
print('平均成绩为',ava)

5、输入3个正整数a,b,n,精确计算a/b的结果到小数后n位

def tongji_n(a,b,n):
    c=a/b
    print(f'{a}/{b}=%.{n}f'%c)

a=int(input('输入正整数a:'))
b=int(input('输入正整数b:'))
n=int(input('输入正整数n:'))
tongji_n(a, b, n)

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

def monkey_peach(n):
    if n==10:
        return 1
    return 2*(monkey_peach(n+1)+1)
total=monkey_peach(1)
print(f'第1天共摘了{total}个桃子')

7、有一个序列1,3,5,8,13,21...用while循环求出这个数列的前20项之和

def total_xulie():
    a=3
    b=5
    i=1
    total=4
    while i<=17:
        total=total+b
        temp=a
        a=b
        b=b+temp
        i=i+1
    return total
num=total_xulie()
print(f'前20项的和1+3+5+...={num}')

8、找出1000之内的所有的完数

def is_wanshu(n):
    ls=[]
    for i in range(1,n):
        if n%i==0:
            ls.append(i)
    if sum(ls)==n:
        return 1
    else:
        return 0
print('1000以内的完数有:',end='')    
for j in range(1,1001):
    k=is_wanshu(j)
    if k==1:
        print(j,end='\t')

9、近千人排队,7人一行余3,5余3,3余1.求学生数

def student_num(n):
    for j in range(n,1,-1):
        if j%7==3 and j%5==3 and j%3==1:
            return j
n=int(input('输入估计的学生数:'))
print('学生数应该是:',student_num(n))

10、小华今年12,他妈妈比他大20岁,多少年后他妈妈年龄比他大一倍

def count_year():
    xiaohua=12
    mama=xiaohua+20
    i=0
    while True:
        if mama==2*xiaohua:
            break
        xiaohua=xiaohua+1
        mama=mama+1
        i=i+1
    return i
nyear=count_year()
print(f'{nyear}后小华妈妈年龄比他大一倍')

11、世界人口60亿,每年1.5%比例增长,多少年后80亿?

def nyear():
    x=60
    year=1
    while True:
        x=x*1.015
        if x>=80:
            return year
            break
        else:
            year=year+1            
print(f'{nyear()}后80亿')

12、一球从80m高度自由下落,每次回到高度1半,求10次后高度多少,共走了多少m

def bool_drop(n):
    h=80
    s=80
    k=[]
    for i in range(n):
        h=h/2
        s=s+2*h
    k=[s,h]
    return k
n=int(input('输入反弹次数:'))
h_s=bool_drop(n)
print(f'{n}次后高度{h_s[1]},共走了{h_s[0]}m')

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值