Python 入門程式設計題(三)答案
阿新 • • 發佈:2018-12-26
Python 入門程式設計題:21~30(答案)
提示:最好還是先思考,先編寫,再看答案哦 ^_^
21.
import os.path import shutil def create_filefolder(folder_name): if not os.path.exists(folder_name): os.mkdir(folder_name) def main(): create_filefolder("執行結果") file_list = os.listdir('..\\images') folders = [] for each in file_list: folders.append(each.split('-')[0]) folders = set(folders) os.chdir("執行結果") for folder in folders: create_filefolder(folder) os.chdir('..\\..\\images') for file in file_list: shutil.move(file, '..\\py\\執行結果\\'+file.split('-')[0]) if __name__ == '__main__': main()
22.
改進我們的小紅球“”
class Ball: def __init__(self,canvas,paddle,color): self.canvas = canvas self.paddle = paddle self.id = canvas.create_oval(10,10,25,25,fill=color) self.canvas.move(self.id,245,100) starts = [-3,-2,-1,1,2,3] random.shuffle(starts) self.x = starts[0] self.y = -3 self.canvas_height = self.canvas.winfo_height() self.canvas_width = self.canvas.winfo_width() def draw(self): self.canvas.move(self.id,self.x,self.y) pos = self.canvas.coords(self.id) if pos[1] <= 0: self.y = 3 if pos[3] >=self.canvas_height: self.y = -3 if self.hit_paddle(pos) == True: self.y = -3 if pos[0] <= 0: self.x = 3 if pos[2] >= self.canvas_width: self.x = -3
把小球加入主迴圈:
while 1:
ball.draw()
tk.update_idletasks()
tk.update()
time.sleep(0.01)
23.
list1 = [1, [2], [3, 4], [[5, 6], 7], [8, [[9, [10], 11], 12], 13]]
print([int(i.strip(' []')) for i in str(list1).split(',')])
24.
def leapyear(year): if (year % 4 == 0 and year % 100) or year % 400 == 0: return True else: return False def days(ymd): d =(0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30) day = sum(d[:ymd[1]]) + ymd[2] if leapyear(ymd[0]) and ymd[1] > 2: day += 1 return day start = (2014, 8, 18) now = (2017, 4, 19) result = - days(start) for i in range(start[0], now[0]): if leapyear(i): result += 366 else: result += 365 result = result + days(now) print(result)
25.
str1 = 'easqWAwaeq'
str2 = ''.join(sorted(list(str1), key = lambda x: ord(x) if ord(x) < 97 else ord(x) -31.5))
print(str2)
26.
lower = int(input("輸入區間最小值: "))
upper = int(input("輸入區間最大值: "))
for num in range(lower,upper + 1):
# 素數大於 1
if num > 1:
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num)
27.
import itertools
count = 1
for i in itertools.permutations((1, 2, 3, 4, 6 , 7, 8, 9), 4):
list1 = [0] * 9
list1[4] = 5
if len(set([10 - n for n in i]) & set(i)) == 0:
for j in range(4):
list1[j] = i[j]
for j in range(4):
list1[8 - j] = 10 - i[j]
if list1[0] + list1[1] + list1[2] == 15 and list1[0] + list1[3] + list1[6] == 15:
print('No.%d'%count)
for m in range(3):
print(list1[m * 3: (m + 1) * 3])
print()
count += 1
28.
for x in range(1,10):
for y in range(1,10):
for z in range(1,10):
if x + y + z == 15:
print('%s + %s + %s = 15' % (x,y,z))
29.
def fadd(a,b,c,d):
fenzi = a*d+b*c
fenmu = b*d
GCD = lambda x,y:x if y==0 else GCD(y, x%y)
gcd = GCD(fenzi,fenmu)
fenzi /= gcd
fenmu /= gcd
return fenzi, fenmu
print '1/6 + 1/3 = %d/%d' % fadd(1,6,1,3)
def fminus(a,b,c,d):
fenzi = a*d-b*c
fenmu = b*d
GCD = lambda x,y:x if y==0 else GCD(y, x%y)
gcd = GCD(fenzi,fenmu)
fenzi /= gcd
fenmu /= gcd
return fenzi, fenmu
print '1/2 - 1/3 = %d/%d' % fminus(1,2,1,3)
30.
import random as r
guess = ['石頭', '剪刀', '布', '石頭']
player = input(f'{guess[0:3]}:')
while player != 'Q':
try:
if player not in guess:
raise
CPU = r.choice(guess[0:3])
print(f'CPU:{CPU}')
if player == CPU:
print('Draw!')
elif guess[guess.index(player) + 1] == CPU:
print('Player Win!')
else:
print('CPU win!')
player = input(f'{guess[0:3]}:')
except:
player = input(f'輸入有誤!{guess[0:3]}:')
(未完待續,持續更新)