Python100例 我的实现展示(21-30例)
'''21、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上
都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。'''
def test_exam_21():
total = 1
x = 1
for i in range(9, 0, -1):
if i == 9:
x = 2 * (1 + 1)
total += x
else:
x = 2 * (x + 1)
total += x
print("第一天共摘了{0}个桃子。".format(str(total)))
'''22、两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他
不和x,z比,请编程序找出三队赛手的名单。(这道题不会,写的是自己做工逻辑处理的代码,而非完全用程序做的处理的代码)'''
def test_exam_22(): # 下方为菜鸟提供的实现方式
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)))
"""pa = {'a': '', 'b': '', 'c': ''}
pb = ['x', 'y', 'z']
for i in range(len(pb)):
if pb[i] == 'x':
pa['b'] = pb[i]
elif pb[i] == 'y':
pa['c'] = pb[i]
else:
pa['a'] = pb[i]
print("三队参赛选手名单如下所示:")
print(pa)"""
'''23、打印出如下图案(菱形):
*
***
*****
*******
*****
***
*'''
def test_exam_23():
listx = [1, 3, 5, 7, 5, 3, 1]
for i in range(1, 8):
for j in range((i - 4).__abs__()):
print(" ", end="")
for x in range(listx[i - 1]):
print("*", end="")
print()
'''24、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。'''
def test_exam_24():
s = int(input("请输入一个正整数x,程序将计算分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前x项之和。\n"))
list_x = ['2/1']
print(list_x[0])
total = 2 / 1
for i in range(1, s):
x = list_x[i - 1].split('/')
list_x.append(str(int(x[0]) + int(x[1])) + '/' + x[0])
print(list_x[i])
total += (int(x[0]) + int(x[1])) / int(x[0])
print(list_x)
print("输入的正整数为{0},程序将计算分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前{1}项之和为:{2}。".format(s, s, total))
'''25、题目:求1+2!+3!+...+20!的和。'''
def test_exam_25():
total = 0
for i in range(1, 20):
t = 1
for j in range(1, i + 1):
t *= j
total += t
print('1! + 2! + 3! + ... + 20! = %d' % total)
"""26、利用递归方法求5!。"""
def test_exam_26():
total = 1
for i in range(1, 5):
total *= i
print('5! = %d' % total)
'''27、利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。'''
def test_exam_27():
s1 = input("请输入一个5个字符的字符串,程序将以相反顺序打印出来。\n")
print(exchange(s1))
def exchange(s2):
s = list(s2)
for i in range(int(len(s)/2)):
t = s[i]
s[i] = s[len(s) - 1 - i]
s[len(s) - 1 - i] = t
return "".join(s)
'''28、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,
说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?'''
def test_exam_28():
five_age = 10
for i in range(5-1):
five_age += 2
print("第五个人{0}岁".format(five_age))
'''29、给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。'''
def test_exam_29():
s1 = input("请输入一个不多于5位的正整数,程序将求它是几位数,并且逆序打印出各位数字。\n")
x = int(s1)
for i in range(4, -1, -1):
if x % math.pow(10, i):
print("输入的数是{0}位数,逆序打印的数字如下:".format(str(i+1)))
break
print(exchange(s1))
'''30、一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。'''
def test_exam_30():
s1 = input("请输入一个不多于5位的正整数,程序将求它是几位数,并且逆序打印出各位数字。\n")
if int(s1) == int(exchange(s1)):
print("输入的数为{0},该数逆序处理之后为{1},它是回文数。".format(s1, exchange(s1)))
else:
print("输入的数为{0},该数逆序处理之后为{1},它不是回文数。".format(s1, exchange(s1)))
if __name__ == '__main__':
# test_exam_21()
# test_exam_22()
# test_exam_23()
# test_exam_24()
# test_exam_25()
# test_exam_26()
# test_exam_27()
# test_exam_28()
# test_exam_29()
test_exam_30()