Python學習(一)
python第一次上機練習
7-1 jmu-python-運算子-找錢
買單時,營業員要給使用者找錢。營業員手裡有10元、5元、1元(假設1元為最小單位)幾種面額的鈔票,其希望以儘可能少(張數)的鈔票將錢換給使用者。比如,需要找給使用者17元,那麼其需要給使用者1張10元,1張5元,2張1元。
而不是給使用者17張1元或者3張5元與2張1元。
輸入格式:
輸入n,代表要進行n次測試。
然後輸入n行整數,每行代表要找的錢。
輸出格式:
按照如下格式輸出,x代表要找的錢總數,?代表每種面額所需的數量。
x = ?*10 + ?*5 + ?*1
注意:= 與 +左右均有空格。
輸入樣例:
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-是否偶數
輸入一個整數,判斷是否偶數
輸入樣例:
7
輸出樣例:
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)