概要:本文主要是对菜鸟教程里100例题部分例题的解答,可能思想存在问题,请多指教
- 题目一:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
li = [1, 2, 3, 4]
re = []
count = 0
for i in li:
for j in li:
for k in li:
if k != j and k != i and j != i:
count = count + 1
re.append(100 * i + 10 * j + k)
print("一共有%d个满足条件的三位数: " % (count,), end="")
print(re)
执行结果:
一共有24个满足条件的三位数: [123, 124, 132, 134, 142, 143, 213, 214, 231, 234, 241, 243, 312, 314, 321, 324, 341, 342, 412, 413, 421, 423, 431, 432]
- 题目二:输入某年某月某日,判断这一天是这一年的第几天?
import datetime
year = int(input('year:'))
month = int(input('month:'))
day = int(input('day:'))
t = datetime.datetime(year=year, month=month, day=day)
print("%d年%d月%d日是%d年的第%d天" % (year, month, day, year, t.timetuple()[7]))
执行结果:
year:2020
month:02
day:23
2020年2月23日是2020年的第54天
- 题目三:将一个正整数分解质因数。例如:输入90,打印出90=233*5。
li = []
def get_factor(n):
flag = 0
for i in range(2, int(n / 2) + 1):
if n % i == 0:
flag = 1
li.append(str(i))
get_factor(int(n / i))
break
if flag == 0:
li.append(str(n))
if len(li) == 1:
li.insert(0, '1')
num = int(input("请输入一个正整数:"))
get_factor(num)
print("%s = %s" % (num, ' * '.join(li)))
执行结果:
请输入一个正整数:68
68 = 2 * 2 * 17
- 题目四:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
def cal_high(high, times):
if times == 1:
return high
else:
len = high
h = high
for i in range(0, times-1):
h = h / 2
len = len + h * 2
return len
print(cal_high(100, 10))
执行结果:
299.609375
- 题目五:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
res = []
new = []
for i in ['a', 'b', 'c']:
for n in ['x', 'y', 'z']:
if ('a' == i and 'x' == n) or ('c' == i and 'x' == n) or ('c' == i and 'z' == n):
continue
else:
res.append(i + n)
for u in res:
new.clear()
new.append(u)
for v in res:
st = "".join(new)
if v[0] in st or v[1] in st:
continue
else:
new.append(v)
if len(new) == 3:
break
print("比赛名单为:" + ','.join(new))
执行结果:
比赛名单为:az,bx,cy
题目五的解题方法可能过于复杂,希望有更好的解题方案可以分享一下