基于Python3.7的100个经典介绍案例(21-30),Python37,入门,2130

发表时间:2020-10-15

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

分析:反向推断。猴子有一个桃子,他偷了一个桃子,觉得不够又偷了与手上等量的桃子,一共偷了9天

n = 1
for i in range(9):
    n = (n + 1) * 2
print('一共有', n, '个桃子')

输出结果:

一共有 1534 个桃子

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

分析:利用集合特性,集合是一个无序的不重复的list。

a = set(['y', 'z']) #a不和x比
b = set(['x', 'y', 'z']) #b可以和任何一个人比
c = set(['y']) #c不和x,z比

for i in a:
    for j in b:
        for k in c:
            #i、j、k组成一个长度为3的set,即每个人都有一个交易对手且不重复
            if len(set([i, j, k])) == 3:
                print('a-->%s, b-->%s, c-->%s' % (i, j, k))

输出结果:

a-->z, b-->x, c-->y

23、打印出如下图案(菱形):

   *
  ***
 *****
*******
 *****
  ***
   *

分析:找规律。

for i in range(-4, 5):
    if i < 0:
        j = -i
    else:
        j = i

    print(' '*j + '*'*(9-2*j))

输出结果:

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

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

a = 2
b = 1
s = 0

for i in range(0, 20):
    s += a / b
    a, b = a+b, a
print(s)

输出结果:

32.66026079864164

25、求1+2!+3!+…+20!的和。

n = 0
s = 0
t = 1
for n in range(1, 21):
    t *= n
    s += t
print('1! + 2! + 3! + ... + 20! =', s)

输出结果:

1! + 2! + 3! + ... + 20! = 2561327494111820313

26、利用递归方法求5!。

def f(n):
    if n==1:
        return 1
    else:
        return n * f(n-1)

print(f(5))

输出结果:

120
  • 27、利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

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

分析:递归求等差数列。

def age(n):
    if n==1:
        return 10
    return 2 + age(n-1)

print(age(5))

输出结果:

18

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

n = int(input('输入一个正整数:'))
n = str(n) #转换成字符,字符可用用len()函数求长度
print('%d位数'%len(n))
print(n[::-1])

输入12345,输出结果:

输入一个正整数:12345
5位数
54321

30、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

n = input('请输入一个数字:')
l = len(n)
flag = True

for i in range(0, l):
    if n[i] != n[-i-1]:
        flag = False
    else:
        flag = True

if flag==True:
    print('%s是回文数'% n)
else:
    print('%s不是回文数'% n)

输入1234321,输出结果:

请输入一个数字:1234321
1234321是回文数

文章来源互联网,如有侵权,请联系管理员删除。邮箱:417803890@qq.com / QQ:417803890

微配音

Python Free

邮箱:417803890@qq.com
QQ:417803890

皖ICP备19001818号
© 2019 copyright www.pythonf.cn - All rights reserved

微信扫一扫关注公众号:

联系方式

Python Free