- 370038003300381586931224211
水仙花數
描述
水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 n位數(n≥3 且 n<6),它的每個位上的數字的 n 次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153,此處'^'表示冪運算)。
編程尋找並輸出n位的水仙花數,n由用戶輸入,每行輸出一個數字。
輸入格式
輸入一個介於3到5之間的正整數(包括3和5)
輸出格式
輸出n位的水仙花數,每行一個數
輸入輸出示例
輸入 輸出 示例 1 4 1634
8208
9474n=eval(input()) if n==3: for i in range(100,999): b=str(i) if i==int(b[0])**3+int(b[1])**3+int(b[2])**3: print(i) if n==4: for i in range(1000,9999): b=str(i) if i==int(b[0])**4+int(b[1])**4+int(b[2])**4+int(b[3])**4: print(i) elif n==5: for i in range(10000,99999): b=str(i) if i==int(b[0])**5+int(b[1])**5+int(b[2])**5+int(b[3])**5+int(b[4])**5: print(i)
-
數列求和
描述
給定某數字A(1≤A≤9)以及非負整數N(0≤N≤100000),求數列之和S=A+AA+AAA+⋯+AA⋯A(N個A)。例如A=1, N=3時,sum=1+11+111=123。
輸入格式
兩行,第一行輸入一個整數A,且該數介於1至9之間(包含1和9)
第二行輸入一個非負整數N,不超過100000
輸出格式
輸出其N項數列之和sum的值。
輸入輸出示例
輸入 輸出 示例 1 1
3
123 def fact(b): if b==1: return a else: return a*10**(b-1)+fact(b-1) a=int(input()) n=int(input()) s=0 for i in range(1,n+1): s=s+fact(i) print(s)
- 33003000370038003300381586931257842
溫度轉換異常處理
描述
溫度的刻畫有兩個不同體系:攝氏度(Celsius)和華氏度(Fabrenheit)。
請編寫程序將用戶輸入華氏度轉換為攝氏度,或將輸入的攝氏度轉換為華氏度。
轉換算法如下:(C表示攝氏度、F表示華氏度)
C = ( F - 32 ) / 1.8
F = C * 1.8 + 32
要求如下:
(1) 輸入輸出的攝氏度采用大寫字母 C 或小寫字母 c 結尾,溫度可以是整數或小數,如:12.34C 指攝氏度 12.34 度;
(2) 輸入輸出的華氏度采用大寫字母 F 或小字字母 f 結尾,溫度可以是整數或小數,如:87.65F 指華氏度 87.65 度;
(3) 考慮異常輸入的問題,如輸入不合法則拋出異常;
(4) 使用input()獲得測試用例輸入時,不要增加提示字符串。
輸入格式
輸入一個類似87.65F 的以字母結尾的數字
輸出格式
輸入正常,輸出轉換后的溫度,保留小數點后2位小數。
當用戶輸入值末位不是“C、c、F、f”中的一個時,輸出"輸入錯誤,末位只能是'C','c','F','f'"
當檢測到NameError錯誤時輸出'試圖訪問的變量名不存在'
當檢測到SyntaxError 錯誤時輸出'存在語法錯誤'
輸入輸出示例
輸入 輸出 示例 1 102F
102D
AC
102ff
38.89C
輸入錯誤,末位只能是'C','c','F','f'
試圖訪問的變量名不存在
存在語法錯誤
try: t=input() if t[-1] in ['F','f']: C=(eval(t[:-1])-23)/1.8 print("{:.2f}C".format(C)) elif t[-1] in ['C','c']: F=eval(t[:-1])*1.8+32 print("{:.2f}F".format(F)) else: print("輸入錯誤,末位只能是'C','c','F','f'") except NameError: print("試圖訪問的變量名不存在") except SyntaxError: print("存在語法錯誤")
-
判斷是否直角三角形
描述
輸入三個數a,b,c, 判斷能否以它們為三個邊長構成直角三角形。若能,輸出YES,否則輸出NO。
輸入格式
輸入包括三行,每行是一個數字
輸出格式
'YES' 或'NO'
輸入輸出示例
輸入 輸出 示例 1 3
4
5YES a=eval(input()) b=eval(input()) c=eval(input()) if a**2+b**2==c**2 or a**2+c**2==b**2 or b**2+c**2==a**2 : print("YES") else: print("NO")
-
求e的近似值
描述
自然常數e可以用級數1+1/1!+1/2!+⋯+1/n!來近似計算。
本題要求對給定的非負整數n,求該級數的前n項和。
輸入格式:
輸入第一行中給出非負整數n(≤100)。
輸出格式:
在一行中輸出部分和的值,保留小數點后八位。
輸入樣例:
10
輸出樣例:
2.71828180
n = int(input()) a = 1 sum = 1 for i in range(1,n+1): a *= i s = 1/a sum += s print("{:.8f}".format(sum))
- 00370038003300381586931310327
計算圓周率
根據下面的泰勒級數關系式,求圓周率的值,當最后一項的值小於給定閾值時結束。
輸入格式:
輸入在一行中給出小於1且大於0的閾值。
輸出格式:
在一行中輸出滿足閾值條件的近似圓周率,輸出到小數點后6位。
輸入樣例1:
0.000001
輸出樣例1:
3.141591
n=eval(input()) a=1 for i in range(1,1000000): if (1/(2*i+1))>=n: a=((-1)**i)*(1/(2*i+1))+a else: break pi=a*4 print("{:.6f}".format(pi))
- 0370038003300381586931324825
個稅計算器
描述
目前我國個人所得稅計算公式如下:
應納個人所得稅稅額= (工資薪金所得 -“五險一金”-扣除數)×適用稅率-速算扣除數
個稅免征額為5000元/月,2018年10月1日起調整后,也就是2012年實行的7級超額累進個人所得稅稅率表如下:
全月應納稅所得額(含稅級距) 稅率(%) 速算扣除數
不超過3,000元 3 0
超過3,000元至12,000元的部分 10 210
超過12,000元至25,000元的部分 20 1,410
超過25,000元至35,000元的部分 25 2,660
超過35,000元至55,000元的部分 30 4,410
超過55,000元至80,000元的部分 35 7,160
超過80,000元的部分 45 15,160請編寫一個個稅計算器,用戶輸入為應發工資薪金所得扣除五險一金的金額,輸出應繳稅款和實發工資,結果保留小數點后兩位。當輸入數字小於0時,輸出“error”。
輸入格式
12000
輸出格式
應繳稅款490.00元,實發工資11510.00元。
輸入輸出示例
輸入 輸出 示例 1 12000
20000
-10
應繳稅款490.00元,實發工資11510.00元。
應繳稅款1590.00元,實發工資18410.00元。
error
n=eval(input()) a=0 if n<0: print("error") else: if n-5000<=3000: a=0 if n>5000 and n-5000<=3000: a=(n-5000)*3/100 if n-5000>3000 and n-5000<=12000: a=(n-5000)*10/100-210 if n-5000>12000 and n-5000<=25000: a=(n-5000)*20/100-1410 if n-5000>25000 and n-5000<=35000: a=(n-5000)*25/100-2660 if n-5000>35000 and n-5000<=55000: a=(n-5000)*30/100-4410 if n-5000>55000 and n-5000<=80000: a=(n-5000)*35/100-7160 elif n-5000>80000 : a=(n-5000)*45/100-15160 print("應繳稅款{:.2f}元,實發工資{:.2f}元。".format(a,n-a))
- 33003000370038003300381586931346641
身份證號校驗
描述
中國目前采用的是18位身份證號,其第7-10位數字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性別,奇數為男性,偶數為女性,第18位是校驗位。
如果身份證號碼的其中一位填錯了(包括最后一個校驗位),則校驗算法可以檢測出來。如果身份證號的相鄰2位填反了,則校驗算法可以檢測出來。校驗規則如下:
1. 將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2. 將這17位數字和系數相乘的結果相加。
3. 用加出來和除以11,看余數只可能是:0-1-2-3-4-5-6-7-8-9-10
分別對應的最后一位身份證的號碼為:1-0-X-9-8-7-6-5-4-3-2
4. 通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X(大寫英文字母X)。如果余數是10,身份證的最后一位號碼就是2。
用戶輸入一個身份證號,校驗其是否是合法的身份證號碼。
輸入格式
一個18位身份證號,末位為數字或大寫字母X
輸出格式
'身份證號碼校驗為合法號碼!' 或 '身份證校驗位錯誤!'
輸入輸出示例
輸入 輸出 示例 1 220221197302286534
220221197302296536
身份證校驗位錯誤!
身份證號碼校驗為合法號碼!
ls=input() li=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) a=0 if len(ls)==18: for i in range(17): a=a+int(ls[i])*int(li[i]) if str(ls[-1])=='X' : if a%11==2: print("身份證號碼校驗為合法號碼!") else: print("身份證校驗位錯誤!") elif (a % 11 + int(ls[17])) % 11 == 1: print("身份證號碼校驗為合法號碼!") else: print("身份證校驗位錯誤!") else: print("身份證校驗位錯誤!")
-
校驗身份證號碼並輸出個人信息
描述
中國目前采用的是18位身份證號,其第7-10位數字是出生年,11-12位是出生月份,13-14是出生日期,第17位是性別,奇數為男性,偶數為女性,第18位是校驗位。
如果身份證號碼的其中一位填錯了(包括最后一個校驗位),則校驗算法可以檢測出來。如果身份證號的相鄰2位填反了,則校驗算法可以檢測出來。校驗規則如下:
1. 將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2. 將這17位數字和系數相乘的結果相加。
3. 用加出來和除以11,看余數只可能是:0-1-2-3-4-5-6-7-8-9-10
分別對應的最后一位身份證的號碼為:1-0-X-9-8-7-6-5-4-3-2
4. 通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的X(大寫英文字母X)。如果余數是10,身份證的最后一位號碼就是2。
用戶輸入一個身份證號,校驗其是否是合法的身份證號碼,如身份證號碼不合法輸出 '身份證校驗位錯誤!',如身份證號碼合法則分別在4行中輸出'身份證號碼校驗為合法號碼!'該人的出生年月日、年齡和性別。
特別說明:改題涉及到具體時間, 需要每年修改一次測試用例, 最后一次修改是2020年。 如果到了2021 年,請提示教師修改。
輸入格式
一個18位身份證號,末位為數字或大寫字母X
輸出格式
參考下面示例
輸入輸出示例
輸入 輸出 示例 1 432831196411150810
432831196811150810
身份證號碼校驗為合法號碼!
出生:1964年11月15日
年齡:54
性別:男身份證校驗位錯誤!
s=eval(input()) ls=str(s) li=(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2) a=0 if len(ls)==18: for i in range(17): a=a+int(ls[i])*int(li[i]) if a%11==2 : if ls[-1]!='X': print("身份證校驗位錯誤!") elif (a % 11 + int(ls[17])) % 11 != 1: print("身份證校驗位錯誤!") else: print("身份證號碼校驗為合法號碼!") print("出生:{}年{}月{}日".format(ls[6:10],ls[10:12],ls[12:14])) print("年齡:{}".format(2020-eval(ls[6:10]))) if eval(ls[16])%2==0: print("性別:女") else: print("性別:男") else: print("身份證校驗位錯誤!")
- 033003000370038003300381586931418860
模擬生成微軟序列號
描述
微軟產品一般都一個25位的序列號,是用來區分每份微軟產品的產品序列號。產品序列號由五組被“-”分隔開,由字母數字混合編制的字符串組成,每組字符串是由五個字符串組成。如:
36XJE-86JVF-MTY62-7Q97Q-6BWJ2
每個字符是取自於以下24個字母及數字之中的一個:
B C E F G H J K M P Q R T V W X Y 2 3 4 6 7 8 9
采用這24個字符的原因是為了避免混淆相似的字母和數字,如I 和1,O 和0等,減少產生不必要的麻煩。
隨機數種子函數語法為:random.seed(n)輸入格式
在2行中分別輸入一個正整數:
第1個整數,代表要生成的序列號的個數
第2個正整數代表隨機數種子
輸出格式
指定個數的序列號
輸入輸出示例
輸入 輸出 示例 1 2
10
P6KFE-RG2CW-V7M7T-3E79C-RH8YY
QX9TJ-8QWG3-PJ8J7-YWTBH-BXFJPimport random num =eval(input()) n = input() random.seed(n) for i in range(num): ls=[] for j in range(5): a='' s='BCEFGHJKMPQRTVWXY2346789' for m in range(5): a=a+random.choice(s) ls.append(a) ls='-'.join(ls) print(ls)