python第一次上機練習
7-1 jmu-python-運算符-找錢
買單時,營業員要給用戶找錢。營業員手裏有10元、5元、1元(假設1元爲最小單位)幾種面額的鈔票,其但願以儘量少(張數)的鈔票將錢換給用戶。好比,須要找給用戶17元,那麼其須要給用戶1張10元,1張5元,2張1元。 而不是給用戶17張1元或者3張5元與2張1元。python
輸入格式: 輸入n,表明要進行n次測試。 而後輸入n行整數,每行表明要找的錢。算法
輸出格式: 按照以下格式輸出,x表明要找的錢總數,?表明每種面額所需的數量。編程
x = ?*10 + ?*5 + ?*1
注意: = 與 +左右均有空格。函數
輸入樣例:post
5 109 17 10 3 0
輸出樣例:測試
109 = 10*10 + 1*5 + 4*1 17 = 1*10 + 1*5 + 2*1 10 = 1*10 + 0*5 + 0*1 3 = 0*10 + 0*5 + 3*1 0 = 0*10 + 0*5 + 0*1
代碼:優化
def Jmu(a): x = 0 y = 0 z = 0 b = a while True: if a >= 10: a -= 10 x += 1 elif a >= 5: a -= 5 y += 1 elif a > 0: a -= 1 z += 1 else: break print("%d = %d*10 + %d*5 + %d*1" % (b, x, y, z)) # print("{} = {}*10 + {}*5 + {}*1".format(b, x, y, z)) n = eval(input()) for i in range(n): a = eval(input()) Jmu(a)
7-2 jmu-python-是否偶數
輸入一個整數,判斷是否偶數加密
輸入樣例:url
7
輸出樣例:spa
7不是偶數
輸入樣例:
8
輸出樣例:
8是偶數
代碼:
a =int(input()) if a % 2 == 0: print("%d是偶數" % a) else: print("%d不是偶數" % a)
7-3 jmu-python-求三角形面積及周長
輸入的三角形的三條邊a、b、c,計算並輸出面積和周長。假設輸入三角形三邊是合法整形數據。
三角形面積計算公式: ,其中
s=(a+b+c)/2
import math #導入math庫 math.sqrt(x) #調用sqrt函數實現開平方運算,x表示要求值的數據 輸入格式: 每行輸入一個數據,表示三角形一條邊。
輸出格式:
area=面積;perimeter=周長
, 面積和周長保留2位小數
輸入樣例:
3 4 5
輸出樣例:
area=6.00;perimeter=12.00
代碼:
import math a = eval(input()) b = eval(input()) c = eval(input()) s = (a+b+c)/2 area = math.sqrt(s*(s-a)*(s-b)*(s-c)) perimeter = a+b+c print("area=%.2f;perimeter=%.2f" % (area, perimeter))
7-4 jmu-分段函數l
本題目要求計算如下分段函數的值(x爲從鍵盤輸入的一個任意實數):
若是輸入非數字,則輸出「Input Error!」
輸入格式: 在一行中輸入一個實數x。
輸出格式: 在一行中按」y=result」的格式輸出,其中result保留兩位小數。
輸入樣例:
-2
輸出樣例: 在這裏給出相應的輸出。例如:
y=3.00
代碼:
# 運行錯誤時,主動拋出異常 def demo1(x): if x > 1: y = 2 * x + 1 elif x > -2: y = 3 else: y = -2 * x - 1 print("y={:.2f}".format(y)) try: x = eval(input()) demo1(x) except Exception as result: print("Input Error!")
python第二次上機練習
7-1 jmu-python-迴文數判斷(5位數字)
本題目要求輸入一個5位天然數n,若是n的各位數字反向排列所得的天然數與n相等,則輸出yes
,不然輸出no
。
輸入格式:
13531
輸出格式:
yes
輸入樣例1:
13531
輸出樣例1:
yes
輸入樣例2:
13530
輸出樣例2:
no
代碼:
num1 = eval(input()) num = num1 num3 = 0 for i in range(5): num2 = num1 % 10 num1 = (num1 - num2) / 10 num3 += num2 *(10 ** (4-i)) if num3 == num: print("yes") else: print("no")
7-2 jmu-python-凱撒密碼加密算法
編寫一個凱撒密碼加密程序,接收用戶輸入的文本和密鑰k,對明文中的字母a-z和字母A-Z替換爲其後第k個字母。
輸入格式:
接收兩行輸入,第一行爲待加密的明文,第二行爲密鑰k。
輸出格式:
輸出加密後的密文。
輸入樣例:
在這裏給出一組輸入。例如:
Hello World! 3
輸出樣例:
在這裏給出相應的輸出。例如:
Khoor Zruog!
代碼:
ch = input() k = int(input()) a = 'abcdefghijklmnopqrstuvwxyz' A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' for i in ch: if 'a'<= i<= 'z': n = a.find(i) print(a[(n + k + 26)%26],end='') elif 'A'<= i <='Z': n = A.find(i) print(A[(n + k + 26)%26],end='') else: print(i,end = '')
7-3 你好
你的程序會讀入一個名字,好比John,而後輸出「Hello John」。
輸入格式:
一行文字。
輸出格式:
一行文字。
輸入樣例:
Mary Johnson
輸出樣例:
Hello Mary Johnson
代碼:
name1 = input() print('Hello ' + name1)
7-4 Py的A+B
程序會讀入兩行,每行都是一個數字,輸出這兩個數字的和
輸入格式:
兩行文字,每行都是一個數字
輸出格式:
一行數字
輸入樣例:
18 21
輸出樣例:
39
代碼:
num1 = eval(input()) num2 = eval(input()) num = num1 + num2 print(num)
7-5 攝氏溫度轉換華氏溫度
溫度刻畫存在不一樣體系,攝氏度以1標準大氣壓下水的結冰點爲0度,沸點爲100度,將溫度進行等分刻畫。華氏度以1標準大氣壓下水的結冰點爲32度,沸點爲212度,將溫度進行等分刻畫。
根據華氏和攝氏溫度定義,轉換公式以下:
- C = ( F – 32 ) / 1.8
- F = C * 1.8 + 32
輸入格式:
一個不帶小數點的數字,表示設攝氏溫度。
輸出格式:
一個表示華氏溫度的數字。請直接採用print()輸出計算結果,不須要對輸出格式作處理。
輸入樣例:
36
輸出樣例:
96.8
代碼:
C = eval(input()) F = C * 1.8 + 32 print(F)
7-6 從鍵盤輸入三個數到a,b,c中,按公式值輸出
在同一行依次輸入三個值a
,b
,c
,用空格分開,輸出 b*b-4*a*c
的值
輸入格式:
在一行中輸入三個數。
輸出格式:
在一行中輸出公式值。
輸入樣例:
在這裏給出一組輸入。例如:
3 4 5
輸出樣例:
在這裏給出相應的輸出。例如:
-44
代碼:
a,b,c = map(int,input().split()) print(b * b - 4 * a * c)
7-7 產生每位數字相同的n位數
讀入2個正整數A和B,1<=A<=9, 1<=B<=10,產生數字AA...A,一共B個A
輸入格式:
在一行中輸入A和B。
輸出格式:
在一行中輸出整數AA...A,一共B個A
輸入樣例1:
在這裏給出一組輸入。例如:
1, 5
輸出樣例1:
在這裏給出相應的輸出。例如:
11111
輸入樣例2:
在這裏給出一組輸入。例如:
3 ,4
輸出樣例2:
在這裏給出相應的輸出。例如:
3333
代碼:
A,B = map(int,input().split(',')) for i in range(B): print("%d" % A,end = '')
python第三次(上機)練習
7-1 jmu-python-匯率兌換
按照1美圓=6人民幣的匯率編寫一個美圓和人民幣的雙向兌換程序
輸入格式:
輸入人民幣或美圓的金額,人民幣格式如:R100
,美圓格式如:$100
輸出格式:
輸出通過匯率計算的美圓或人民幣的金額,格式與輸入同樣,幣種在前,金額在後,結果保留兩位小數
輸入樣例1:
R60
輸出樣例1:
$10.00
輸入樣例2:
$5
輸出樣例2:
R30.00
代碼:
money = input() if money[0] == 'R': R_num = int(money[1:]) M_num = R_num / 6.0 print("$%.2f" % M_num) elif money[0] == '$': M_num = int(money[1:]) R_num = M_num * 6.0 print("R%.2f" % R_num)
7-2 jmu-python-九九乘法表(矩形)
本題目要求輸出以下圖所示的九九乘法表
注:乘積要求作格式控制,佔4個位置的寬度
輸入樣例:
無
輸出樣例:
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
代碼:
for x in range(1, 10, 1): if x>1: print() for y in range(1, 10, 1): print("%d*%d=%-4d" % (x, y, x * y), end="")
7-3 jmu-python-判斷是否構成三角形
輸入三角形的三邊,判斷是否能構成三角形。若能構成輸出yes,不然輸出no。 輸入格式:
在一行中直接輸入3個整數,3個整數之間各用一個空格間隔,沒有其餘任何附加字符。
輸出格式:
直接輸出yes
或no
,沒有其餘任何附加字符。
輸入樣例1:
3 4 5
輸出樣例1:
yes
輸入樣例2:
1 2 3
輸出樣例2:
no
代碼
x, y, z = map(int, input().split(" ")) if (x + y > z) and (x + z > y) and (y + z > x): print("yes") else: print("no")
7-4 jmu_python_最大公約數&最小公倍數
本題要求從鍵盤輸入兩個整數(以逗號間隔),編程求出這兩個數的最大公約數和最小公倍數
提示: 求最大公約數可用展轉相除法,最小公倍數用兩數的積除以最大公約數 輸入格式:
在一行中輸入兩個整數,以逗號間隔
輸出格式:
輸出「GCD:a, LCM:b",其中a爲求出的最大公約數,b爲求出的最小公倍數
注意:在逗號後面有個空格
輸入樣例:
12,14
輸出樣例:
GCD:2, LCM:84
代碼:
def gcd(a, b): while b != 0: temp = a % b a = b b = temp return a a, b = map(int, input().split(",")) print("GCD:%d, LCM:%d" % (gcd(a, b), a * b / gcd(a, b)))
7-5 轉換函數使用
輸入一個整數和進制,轉換成十進制輸出
輸入格式:
在一行輸入整數和進制
輸出格式:
在一行十進制輸出結果
輸入樣例:
在這裏給出一組輸入。例如:45,8
輸出樣例:
在這裏給出相應的輸出。例如: 37
代碼:
''' 基數:base ''' num_str, base = map(str, input().split(",")) num_end = 0 # 記錄最終結果 num_len = len(num_str) for i in range(0, num_len, 1): num_int = int(num_str[num_len - i - 1]) num_end = num_end + num_int * (int(base) ** i) print(num_end)
7-6 水仙花數
水仙花數是指一個N
位正整數(N≥3
),它的每一個位上的數字的N
次冪之和等於它自己。 例如:153=1×1×1+5×5×5+3×3×3
。 本題要求編寫程序,計算全部N
位水仙花數。
輸入格式: 輸入在一行中給出一個正整數N
(3≤N≤5
)
輸出格式:
按遞增順序輸出全部N位水仙花數,每一個數字佔一行。
輸入樣例:
在這裏給出一組輸入。例如:
3
輸出樣例:
在這裏給出相應的輸出。例如:
153 370 371 407
代碼
''' 理解: 以三位數爲例,所取數的範圍是[100,1000); for i in range(100,1000): num_str = str(i) temp1 = int(num_str[0]) temp2 = int(num_str[1]) temp3 = int(num_str[2]) if temp1 ** 3 + temp2 ** 3 + temp3 ** 3 == i: print(i) 輸入N位數字時,就是對三位水仙花數的改進 ''' def p(a, b): num = 1 for i in range(1, b + 1, 1): num = num * a return num N = int(input()) # N位正整數 begin = p(10, N - 1) end = p(10, N) for i in range(begin, end, 1): num_str = str(i) add = 0 for j in range(0, N, 1): temp = int(num_str[j]) add = add + temp ** N if add == i: print(i) continue # 能夠省略
7-7 jmu-python-成績轉換
本題要求編寫程序將一個百分制成績轉換爲五分製成績。轉換規則:
大於等於90分爲A; 小於90且大於等於80爲B; 小於80且大於等於70爲C; 小於70且大於等於60爲D; 小於60爲E。
輸入樣例:
98
輸出樣例:
A
代碼:
# 省事版 grade = int(input()) if grade >= 90: print("A") elif grade >= 80: print("B") elif grade >= 70: print("C") elif grade >= 60: print("D") else: print("E")
7-8 jmu-python-韓信點兵
在中國數學史上,普遍流傳着一個「韓信點兵」的故事:韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超羣,爲漢朝創建了卓越的功勞。聽說韓信的數學水平也很是高超,他在點兵的時候,爲了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數:
按從1至5報數,記下最末一個士兵報的數爲1; 再按從1至6報數,記下最末一個士兵報的數爲5; 再按從1至7報數,記下最末一個士兵報的數爲4; 最後按從1至11報數,最末一個士兵報的數爲10; 請編寫程序計算韓信至少有多少兵。
輸入格式:
無輸入
輸出格式:
輸出韓信至少擁有的士兵人數。
輸入樣例:
無輸入
輸出樣例:
輸出人數
代碼:
tool = True i = 11 while (tool): i = i + 1 if (i % 5 == 1) and (i % 6 == 5) and (i % 7 == 4) and (i % 11 == 10): print(i) tool = False ''' # 無腦版 """ 假設韓信最多有4千兵將 """ for i in range(11, 4000, 1): if (i % 5 == 1) and (i % 6 == 5) and (i % 7 == 4) and (i % 11 == 10): print(i) '''
7-9 求偏差小於輸入值的e的近似值
天然常數e
能夠用級數1+1/1!+1/2!+⋯+1/n!
來近似計算。ei
表明前i
項求和。輸入偏差範圍error
,當 ,則表示
e
的近似值知足偏差範圍。
輸入格式:
在一行輸入偏差範圍。
輸出格式:
在一行輸出e的近似值(保留6位小數)。
輸入樣例1:
在這裏給出一組輸入。例如:
0.01
輸出樣例1:
在這裏給出相應的輸出。例如:
2.716667
輸入樣例2:
在這裏給出一組輸入。例如:
0.000000001
輸出樣例2:
在這裏給出相應的輸出。例如:
2.718282
代碼:
''' 分母:Denominator 階乘:Factorial 天然常數e能夠用級數1+1/1!+1/2!+⋯+1/n!來近似計算。ei表明前i項求和。輸入偏差範圍error,當 ei+1-ei<error,則表示e的近似值知足偏差範圍。 ''' def Fact(a): deno = 1 for i in range(1, a + 1, 1): deno = deno * i return deno error = eval(input()) tool = True num = 0 ei = 1 # 記錄 ei+1 while (tool): e = ei # 記錄 ei num = num + 1 ei = ei + 1 / Fact(num) if ei - e < error: # 判斷是否知足偏差範圍 tool = False print("%.6f" % ei)
7-10 jmu-python-區間數之和
輸入一個區間,計算裏面能被3整除或被5整除的數和。
輸入格式:
每行輸入一個數據,表明區間左界和右界。數據必須是整數。
輸出格式:
知足條件數和。
輸入樣例:
2 10
輸出樣例:
33
代碼:
''' 能被三,或被5整除數之和 ''' begin = int(input()) end = int(input()) nums = 0 for i in range(begin, end + 1, 1): if i % 5 == 0 or i % 3 == 0: nums += i print(nums)
7-11 企業根據利潤提成發放獎金問題
企業根據利潤提成發放獎金問題。利潤低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%; 20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;
60萬到100萬之間時,高於60萬元的部分,可提成1.5%;
高於100萬元時,超過100萬元的部分按1%提成。從鍵盤輸入當月利潤,求應發放獎金總數?
輸入格式:
輸入一個利潤整數。例如:輸入120000
。
輸出格式:
輸出一個實數。例如:11500.0
。
輸入樣例:
在這裏給出一組輸入。例如:
120000
輸出樣例:
在這裏給出相應的輸出。例如:
11500.0
代碼
''' prifit:利潤 bonus:獎金 注意:利潤小於0時,獎金應爲0 ''' profit = eval(input()) bonus_1 = 100000 * 0.1 # 10萬元時 bonus_2 = (200000 - 100000) * 0.075 + bonus_1 # 20萬元時 bonus_3 = (400000 - 200000) * 0.05 + bonus_2 # 40萬時 bonus_4 = (600000 - 400000) * 0.03 + bonus_3 # 60萬元時 bonus_5 = (1000000 - 600000) * 0.015 + bonus_4 # 100萬元時 # bonus_6 = (profit - 1000000) * 0.01 + bonus_5 # 高於一百萬時 if profit < 0: print("0") elif profit <= 100000: bonus = profit * 0.1 print("%.1f" % bonus) elif profit <= 200000: bonus = (profit - 100000) * 0.075 + bonus_1 print("%.1f" % bonus) elif profit <= 400000: bonus = (profit - 200000) * 0.05 + bonus_2 print("%.1f" % bonus) elif profit <= 600000: bonus = (profit - 400000) * 0.03 + bonus_3 print("%.1f" % bonus) elif profit <= 1000000: bonus = (profit - 600000) * 0.015 + bonus_4 print("%.1f" % bonus) else: bonus = (profit - 1000000) * 0.01 + bonus_5 print("%.1f" % bonus)
7-12 求前n項的階乘之和
從鍵盤輸入一個整數n,求前n項的階乘之和,1+2!+3!+...+n!
的和
輸入格式:
輸入一個大於1的整數。例如:輸入20
。
輸出格式:
輸出一個整數。例如:2561327494111820313
。
輸入樣例:
在這裏給出一組輸入。例如:
20
輸出樣例:
在這裏給出相應的輸出。例如:
2561327494111820313
代碼:
''' 階乘:Factorial ''' def fact(a): num = 1 for i in range(1, a + 1, 1): num = num * i return num n = eval(input()) add = 0 for j in range(1, n + 1, 1): add = add + fact(j) print(add)
7-13 計算逆序的四位數
輸入一個四位數,獲得一個新的四位數。新數的千位數字、百位數字、十位數字和個位數字分別是原數的個位數、十位數、百位數和千位數。
輸入格式:
輸入一個四位數(假設輸入一定是四位數,而且最後一位不爲0)。
輸出格式:
輸出一個四位數。
輸入樣例:
在這裏給出一組輸入。例如: 1234
輸出樣例:
在這裏給出相應的輸出。例如:
4321
代碼:
n1 = str(input()) # 輸入原數字 n2 = '' for i in range(0, 4, 1): # 能夠拓展爲n位數,利用len()函數 # print(type(n1[i])) n2 = n2 + n1[3 - i] print(n2)
期中測驗
7-2 *
號金字塔
輸入金字塔層數,輸出*
號金字塔
輸入格式:
輸入一個正整數。
輸出格式:
輸出*
號金字塔
輸入樣例:
在這裏給出一組輸入。例如:
3
輸出樣例:
在這裏給出相應的輸出。例如:
* *** *****
代碼:
# *號金字塔 n = int(input()) for i in range(1,n+1,1): for j in range(n,i,-1): print(" ",end="") for k in range(1,2*i,1): print("*",end ="") print("")
- 分析:
- 本體與
二-8.數字金字塔
相似,只是將數字的輸出轉變爲*
- 本體與
7-3 計算兩個日期間隔天數
輸入兩組同年的年月日,計算之間相隔天數。
其中,默認第二組輸入日期比第一組輸入日期大。例如,輸入2018-3-1
,2018-7-18
,輸出間隔天數140
。提示輸入的字符串轉換爲整數須要用到split()函數
以及map()函數
。"2018-3-1".split("-")
的含義是將字符串按-
切分,返回["2018","3","1"]
列表。map(int,list)
含義是將int函數
依次應用於list
中的每個元素。
- 閏年的定義爲被4整除且不能被100整除或被400整除的年份。
輸入格式:
輸入第一組年月日:2018-3-1
輸入第二組年月日:2018-5-25
輸出格式:
輸出天數。
輸入樣例:
在這裏給出一組輸入。例如:
2018-3-1 2018-5-25
輸出樣例:
在這裏給出相應的輸出。例如:
86
代碼:
# 計算兩個日期間隔 def rn(year): tool = 0 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): tool = 1 return tool year1,month1,day1 = map(int,input().split("-")) # 日期1 year2,month2,day2 = map(int,input().split("-")) # 日期2 days = [0,31,28,31,30,31,30,31,31,30,31,30,31] runnian = rn(year1) adds1 = 0 adds2 = 0 if runnian == 0: for i in range(1,month1,1): adds1 = adds1 + days[i] adds1 = adds1 + day1 for i in range(1,month2,1): adds2 = adds2 + days[i] adds2 = adds2 + day2 print(adds2 - adds1 + 1) elif runnian == 1: days[2] = 29 for i in range(1,month1,1): adds1 = adds1 + days[i] adds1 = adds1 + day1 for i in range(1,month2,1): adds2 = adds2 + days[i] adds2 = adds2 + day2 print(adds2 - adds1 + 1)
- 分析:
- 不足之處:
- 沒法將計算不一樣年份之間的間隔日期;
- 日期的輸入順序沒法顛倒
- 不足之處:
7-3 計算兩個日期間隔天數PLUS
本題是對上一題的優化,彌補了上一題的不足之處
- 優勢:
- 1.能夠計算兩個不一樣年份之間的日期
- 2.輸入兩個年份時,能夠不按順序輸入
- 3.增長了判斷年份相同時,而月份或日期不一樣時,能夠不按順序輸入的判斷
- 缺點:
- 1.代碼量太繁瑣
- 2.日期的交換以及計算等,應使用
def
定義函數模塊來解決,能夠增長代碼的適配性
代碼:
# 計算兩個不一樣年份日期的天數 def rn(year): tool = 0 if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0): tool = 1 return tool year1, month1, day1 = map(int, input().split("-")) # 日期1 year2, month2, day2 = map(int, input().split("-")) # 日期2 days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] # 假如第一次輸入的年份大於第二次輸入的年份,將兩者的數據進行交換 if (year1 > year2) or (year1 == year2 and month1 > month2) or (year1 == year2 and month1 == month2 and day1 > day2): year_1 = year2 year_2 = year1 month_1 = month2 month_2 = month1 day_1 = day2 day_2 = day1 else: year_1 = year1 year_2 = year2 month_1 = month1 month_2 = month2 day_1 = day1 day_2 = day2 # 判斷是不是閏年 runnian_1 = rn(year_1) runnian_2 = rn(year_2) adds_1 = 0 # 記錄year_1本年的日期數 adds_2 = 0 # 記錄year_2本年的日期數 # 記錄year_1本年的日期數 if runnian_1 == 0: for i in range(1, month_1, 1): adds_1 = adds_1 + days[i] adds_1 = adds_1 + day_1 elif runnian_1 == 1: days[2] = 29 for i in range(1, month_1, 1): adds_1 = adds_1 + days[i] adds_1 = adds_1 + day_1 # 記錄year_2本年的日期數 if runnian_2 == 0: for i in range(1, month_2, 1): adds_2 = adds_2 + days[i] adds_2 = adds_2 + day_2 elif runnian_2 == 1: days[2] = 29 for i in range(1, month_2, 1): adds_2 = adds_2 + days[i] adds_2 = adds_2 + day_2 adds_3 = 0 # 記錄year_1與year_2年份之間相差天數 for i in range(year_1, year_2, 1): if rn(i) == 0: adds_3 = adds_3 + 365 else: adds_3 = adds_3 + 366 print(adds_2 - adds_1 + adds_3 + 1)