Python经典入门100题 (21-30题)

题目地址: https://blog.csdn.net/weixin_41084236/article/details/81564963
转载请标注: https://blog.csdn.net/qq_43582207
代码编写过程中是自己发挥的,只代表其中一种方法,仅供学习参考
运行版本:Python3.7
作者:My apologize

21-30题

    • 实例021:猴子偷桃
    • 实例022:比赛对手
    • 实例023:画菱形
    • 实例024:斐波那契数列II
    • 实例025: 阶乘求和
    • 实例026:递归求阶乘
    • 实例027:递归输出
    • 实例028:递归求等差数列
    • 实例029:反向输出
    • 实例030:回文数

实例021:猴子偷桃

# 实例021:猴子偷桃
# 题目 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,
# 又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
# 第i天剩余桃子数:ni,如题满足:ni-1 = 2*(ni + 1)
#n10 == 1,求n1
n = 1
for _ in range(9):
    n = 2*(n+1)
print(n)

实例022:比赛对手

# 实例022:比赛对手
# 题目 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
la = ['y', 'z']# 能和a比赛的乙队人
lb = ['x', 'y', 'z']# 能和b比赛的乙队人
lc = ['y']# 能和c比赛的乙队人
a = list(set(la) - set(lc))
b = list(set(lb) - set(la))
c = list(set(lb) - set(a) - set(b))
print('a:{}, b:{}, c:{}'.format(a[0], b[0], c[0]))

实例023:画菱形

# 实例023:画菱形
# 题目 打印出如下图案(菱形):
max = 5# 最大宽度
# 法一:
for i in range(1,max+1,2):
    print(' '*((max-i)//2),end='')
    print('*'*i)
for j in range(1,max):
    print(' '*j,end='')
    print('*'*(max-2*j))
    if max-2*j == 1:
        break
# 法二:用字符串方法.center()
for i in range(1, max+1, 2):
    s = '*'*i
    print(s.center(max))
i = max-2
while i >= 1:
    s = '*'*i
    print(s.center(max))
    i -= 2

实例024:斐波那契数列II

# 实例024:斐波那契数列II
# 题目 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。
a = 2.0
b = 1.0
sum = 0
for i in range(20):
    sum += a/b
    a, b = a+b, a
print(sum)

实例025: 阶乘求和

# 实例025: 阶乘求和
# 题目 求1+2!+3!+…+20!的和。
def jiechen(n):# 计算n!的函数
    s = 1
    for i in range(1, n+1):
        s *= i
    return s

sum = 0
for i in range(1, 21):
    sum += jiechen(i)
print(sum)

实例026:递归求阶乘

# 实例026:递归求阶乘
# 题目 利用递归方法求5!。

def factorial(n):
    return n*factorial(n-1) if n>1 else 1# n= 1 返回1
print(factorial(5))

实例027:递归输出

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

def factorial(s):
    if len(s) != 1:
        factorial(s[1:])
    print(s[0], end=' ')
factorial(input())
import selenium

实例028:递归求等差数列

# 实例028:递归求等差数列
# 题目 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,
# 又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

def func(n):
    if n == 1:
        return 10
    return func(n-1) + 2
print(func(5))

实例029:反向输出

# 实例029:反向输出
# 题目 给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
x = input()
print('x是{}位数'.format(len(x)))
for i in range(len(x)):
    print(x[len(x)-1-i], end='')

实例030:回文数

# 实例030:回文数
# 题目 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
n = input()
if n[0] == n[-1] and n[1] == n[-2]:
    print('{}是回文数'.format(n))
else:
    print('{}不是回文数'.format(n))

你可能感兴趣的:(python入门100题,python)