天天看点

Python3算法基础练习:编程100例( 21~ 25)

往期练习:

Python3算法基础练习:编程100例(1~5)

Python3算法基础练习:编程100例(6 ~ 10)

Python3算法基础练习:编程100例(11 ~ 15)

Python3算法基础练习:编程100例(16 ~ 20)

目录

    • 21 猴子吃桃问题
    • 22.乒乓比赛
    • 23.打印菱形
    • 24 序列求和
    • 25 阶乘求和

21 猴子吃桃问题

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

分析:从后往前推

代码:

x2 = 1
for day in range(9,0,-1):

    x1 = (x2 + 1) * 2
    x2 = x1

print (x1)
           

结果:

Python3算法基础练习:编程100例( 21~ 25)

22.乒乓比赛

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

分析:列出所有可能性,中间去除不可能的情况,结果就是满足要求的了

代码:

team_2 = ['x','y','z']
# 核心 避免重复参赛
for a in team_2:
    for b in team_2:
        # 避免重复参赛
        if a != b:
            for c in team_2:
                if a != c and b != c:
                    if a != 'x' and c != 'x' and c != 'z':
                        print('a的对手是%s\nb的对手是%s\nc的对手是%s' % (a, b, c))

           

结果:

Python3算法基础练习:编程100例( 21~ 25)

23.打印菱形

题目:

Python3算法基础练习:编程100例( 21~ 25)

没有难度的一题,前四行一个规律,后三行一个规律,利用双重for循环

代码:

from sys import stdout
for i in range(4):  # 前四行
    for j in range(2 - i + 1): # 第一行为例 i=0 先打印 3空格 再打印 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('')
           

结果:

Python3算法基础练习:编程100例( 21~ 25)

24 序列求和

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

代码:

a = 2
b = 1
s = 0
for n in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print (s)
           

结果:

Python3算法基础练习:编程100例( 21~ 25)

25 阶乘求和

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

代码:

# 求1+2!+3!+...+20!的和

n = 0
s = 0
t = 1
for n in range(1,21):
    t *= n
    s += t

print (s)
           

结果:

Python3算法基础练习:编程100例( 21~ 25)