python 练习题(持续更新)

1. 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

# -*- coding: UTF-8 -*-
# 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
#    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
months=int(input("请输入一共经过了几个月"))
tuzi=1
a=0
p=0
for i in range(1,months+1):
    p=a+tuzi
    print(i,":",tuzi)
    a=tuzi
    tuzi =p




# f1 = 1
# f2 = 1
# for i in range(1,21):
#     print('%12d %12d' % (f1,f2))
#     if (i % 2) == 0:
#         print('')
#     f1 = f1 + f2
#     f2 = f1 + f2

2. 题目:判断101-200之间有多少个素数,并输出所有素数。

# -*- coding: UTF-8 -*-
# 【程序】
# 题目:判断101-200之间有多少个素数,并输出所有素数。
count=0
for i in range(101,201):
    flag = 1
    for j in range(2,i):
        if i%j==0:
            flag=0
            break
    if flag==1:
        print(i)
        count+=1
print(count)

3. 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。

# -*- coding: UTF-8 -*-
# 题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
#    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
for i in range(100,1000):=i//100=i%10=i//10%10
    if i==**3+**3+**3:
        print(i)

4.题目:将一个正整数分解质因数。例如:输入90,打印出90=233*5。

# -*- coding: UTF-8 -*-
# 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
num=int(input("请输入一个正整数"))
if num<=0:
    print("输入错误,程序结束")
else:
    a=num
    print(num,'=',end='')

    for i in range(2,num):
        while 1:
            if a%i==0:
                a=a/i
                print(i,end='')
                print('*',end='')
            else: break
    print(a)

5. 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

# -*- coding: UTF-8 -*-
# 题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
#    60分以下的用C表示。
score=int(input("请输入学生成绩:"))
if score>=90:
    print("A")
elif score>=60:
    print("B")
elif score>=0:
    print("C")
else:print("成绩输入有误")

6.题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

# -*- coding: UTF-8 -*-
# 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
str=input("请输入一行字符:")
english=0
space=0
number=0
others=0
for each in str:
    if each==" ":
        space+=1
    elif each.isdigit()==True:
        number+=1
    elif each.isalpha()==True:
        english+=1
    else:others+=1
print(english,";",space,";",number,";",others)

7.题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

# -*- coding: UTF-8 -*-
# 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
#    共有5个数相加),几个数相加有键盘控制。
x=int(input("请输入未知量x:"))
a=int(input("请输入是几个数相加:"))
#y是用来
y=0
z=x
for i in range(1,a+1):
    print(z)
    y+=z
    z=x*10**i+z
print(y)
#这是另一种方法
# from functools import reduce
#
# Tn = 0
# Sn = []
# n = int(input('n = :\n'))
# a = int(input('a = :\n'))
# for count in range(n):
#     Tn = Tn + a
#     a = a * 10
#     Sn.append(Tn)
#     print(Tn)
# Sn = reduce(lambda x,y : x + y,Sn)
# print(Sn)

8题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

# -*- coding: UTF-8 -*-
# 题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
#    找出1000以内的所有完数。
for i in range(1,1000):
    k=[]
    sum=0
    #查看这个数相对应的因子
    for j in range(1,i):
        if i%j==0:
            k.append(j)
    for each in k:
        sum+=each
    if sum==i:
        print(" ")
        print(i)




#这是另一个方法
# from sys import stdout
# for j in range(2, 1001):
#     k = []
#     n = -1
#     s = j
#     for i in range(1, j):
#         if j % i == 0:
#             n += 1
#             s -= i
#             k.append(i)
#
#     if s == 0:
#         print(j)
#
#         for i in range(n):
#             print(k[i])
#             print(' ')
#         print(k[n])
#

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

# -*- coding: UTF-8 -*-
# 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
#    第10次落地时,共经过多少米?第10次反弹多高?
h=100
sum=h
x=int(input("请输入经过多少次"))
for i in range(1,x+1):
    h/=2
    sum=sum+h*2
print("第%d次落地时,共经过%f米"%(x,sum))
print("第%d次反弹%f米"%(x,h))
#
# Sn = 100.0
# Hn = Sn / 2
#
# for n in range(2,11):
#     Sn += 2 * Hn
#     Hn /= 2
#
# print('Total of road is %f' % Sn)
# print('The tenth is %f meter' % Hn)

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

# -*- coding: UTF-8 -*-
# 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
#    第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
#    的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
x=1
for i in range(9):
    x=(x+1)*2
print(x)
# 另一种方法
# x2 = 1
# for day in range(9,0,-1):
#     x1 = (x2 + 1) * 2
#     x2 = x1
# print(x1)

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

# -*- coding: UTF-8 -*-
# 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定
#    比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出
#    三队赛手的名单。
for i in range(ord('x'),ord('z') + 1):
    for j in range(ord('x'),ord('z') + 1):
        if i != j:
            for k in range(ord('x'),ord('z') + 1):
                if (i != k) and (j != k):
                    if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
                        print('order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k)))


12.题目:打印出如下图案(菱形)

# -*- coding: UTF-8 -*-
# 题目:打印出如下图案(菱形)
#
#    *
#   ***
#  *****
# *******
#  *****
#   ***
#    *
for i in range(1,5):
    print(" "*(4-i),"*"*(2*i-1))
for i in range(1,4):
    print(" "*i,"*"*(7-2*i))
# 另一种方法
# from sys import stdout
# for i in range(4):
#     for j in range(2 - i + 1):
#         stdout.write(' ')
#     for k in range(2 * i + 1):
#         stdout.write('*')
#     print()
#
# for i in range(3):
#     for j in range(i + 1):
#         stdout.write(' ')
#     for k in range(4 - 2 * i + 1):
#         stdout.write('*')
#     print()

13. 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。


# '''
# 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
# 1.程序分析:请抓住分子与分母的变化规律。
# 2.程序源代码:
# '''
a=1.0
b=2.0
count=1
sum=0
while count<=20:
    sum=sum+b/a
    count+=1
    a,b=b,a+b
print(sum)


14. 题目:求1+2!+3!+…+20!的和

# coding=gbk
# '''
# 题目:求1+2!+3!+...+20!的和
# 1.程序分析:此程序只是把累加变成了累乘。
# 2.程序源代码:
# '''
sum=0
for i in range(1,21):
    a=1
    for j in range(1,i+1):
        a=a*j
        print(a)
    sum+=a
print(sum)

15. 题目:利用递归方法求5!。

# coding=gbk
# '''
# 题目:利用递归方法求5!。
# 1.程序分析:递归公式:fn=fn_1*4!
# 2.程序源代码:
# '''
def digui(n):
    s=0
    if n==0:
        s=1
    else:
        s=n*digui(n-1)
    return s

print(digui(5))

16.题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

# '''
# 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
# 1.程序分析:
# 2.程序源代码:
# '''
def a(n):
    x=[]
    if n<=1:
        x=input()

    else:
        x=input()
        a(n-1)
    i=len(x)
    while i:
        print(x[i-1])
        i-=1

a(5)
# 另一个方法
# def palin(n):
#     next = 0
#     if n <= 1:
#         next = input()
#         print()
#         print (next)
#     else:
#         next = input()
#         palin(n - 1)
#         print(next)
#
# i = 5
# palin(i)
# print()

17. 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

# '''
# 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第
#    3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后
#    问第一个人,他说是10岁。请问第五个人多大?
# 1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道
#       第四人的岁数,依次类推,推到第一人(10岁),再往回推。
# '''
def age(n):
    if n==1:
        x=10
    else:
        x=age(n-1)+2
    return x

print(age(5))

18. 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

# '''
# 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
# 1. 程序分析:学会分解出每一位数,如下解释:
# 2.程序源代码:
# '''
x = int(input("input a number:\n"))
a = int(x / 10000)
b = int(x % 10000 / 1000)
c = int(x % 1000 / 100)
d = int(x % 100 / 10)
e = int(x % 10)

if a != 0:
    print("there are 5 ",e,' ',d,' ',c,' ',b,' ',a)
elif b != 0:
    print("there are 4 ",d,' ',c,' ',b,' ',a)
elif c != 0:
    print("there are 3 ",e,' ',d,' ',c)
elif d != 0:
    print("there are 2 ",e,' ',d)
else:
    print("there are 1",e )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

火眼猊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值