概要:本文主要是對菜鳥教程裏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
題目五的解題方法可能過於複雜,希望有更好的解題方案可以分享一下