- 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
t = 1
t_li = [1]
for i in range(9,0,-1):
t = (t + 1) * 2
t_li.append(t)
print('每天剩余的桃子',t_li)
print('第一天共摘了{}个桃子'.format(t))
输出结果:
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题21.py
每天剩余的桃子 [1, 4, 10, 22, 46, 94, 190, 382, 766, 1534]
第一天共摘了1534个桃子
Process finished with exit code 0
-
两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比。请编程序找出三队赛手的名单。
方法一
m = ['a','b','c']
n = ['x','y','z']
for i in range(len(m)):
for j in range(len(n)):
p = m[i]
q = n[j]
if p+q not in ['ax','cz','cx']:
# print(p+q)
print('{}-vs-{}'.format(m[i],n[j]))
输出结果:
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题22.py
a-vs-y
a-vs-z
b-vs-x
b-vs-y
b-vs-z
c-vs-y
Process finished with exit code 0
方法二
import itertools
m = ['a','b','c']
n = ['x','y','z']
li = ['ax','cx','cz']
for i in itertools.product(m,n):
if ''.join(i) not in li:
print(i)
*********************************************************
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题22.py
('a', 'y')
('a', 'z')
('b', 'x')
('b', 'y')
('b', 'z')
('c', 'y')
Process finished with exit code 0
关于itertools参考:https://www.jianshu.com/p/d1e68bb9c403
'''
打印菱形
*
***
*****
*******
*****
***
*
'''
li = [5,4,3,2,3,4,5]
x = [1,3,5,7,5,3,1]
for i in range(len(li)):
print(int(li[i])*' ',end='')
print(int(x[i])*'*')
*******************************************************************
D:\anaconda\python.exe D:/bilibili大学/python经典习题100道/习题23.py
*
***
*****
*******
*****
***
*
Process finished with exit code 0