一、天天向上的力量 C 一年365天,以第1天的能力值為基數,記為1.0。當好好學習時,能力值相比前一天提高N‰;當沒有學習時,由於遺忘等原因能力值相比前一天下降N‰。每天努力或放任,一年下來的能力值相差多少呢?其中,N的取值範圍是1到10,N可以是小數。 獲得用戶輸入N,計算每天努力和每天放任36 ...
一、天天向上的力量 C
一年365天,以第1天的能力值為基數,記為1.0。當好好學習時,能力值相比前一天提高N‰;當沒有學習時,由於遺忘等原因能力值相比前一天下降N‰。每天努力或放任,一年下來的能力值相差多少呢?其中,N的取值範圍是1到10,N可以是小數。
獲得用戶輸入N,計算每天努力和每天放任365天後的能力值及能力間比值,其中,能力值保留小數點後2位,能力間比值輸出整數,輸出結果間採用英文逗號分隔。
代碼如下:
1 percent=eval(input()) 2 hard=sunning=1 3 for i in range(2,366): 4 hard*=(1+percent/1000) 5 sunning*=(1-percent/1000) 6 print('%.2f,%.2f,%d' %(hard,sunning,hard/sunning))
二、快樂的數字
編寫一個演算法來確定一個數字是否“快樂”。 快樂的數字按照如下方式確定:從一個正整數開始,用其每位數的平方之和取代該數,並重覆這個過程,直到最後數字要麼收斂等於1且一直等於1,要麼將無休止地迴圈下去且最終不會收斂等於1。能夠最終收斂等於1的數就是快樂的數字。
例如: 19 就是一個快樂的數字,計算過程如下:
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
當輸入時快樂的數字時,輸出True,否則輸出False。
代碼如下:
1 num=eval(input()) 2 list1=[] 3 while (num not in list1) and (num!=1): 4 list1.append(num) 5 a=num%10 6 b=num//10%10 7 c=num//100 8 num=a**2+b**2+c**2 9 if num==1: 10 print('True') 11 else: 12 print('False')
三、跳臺階
一隻青蛙一次可以跳上1級臺階,也可以跳上2級。請問該青蛙跳上一個n級的臺階總共有多少種跳法。
輸入臺階數,輸出一共有多少種跳法。
註意:如果運算超時,請思考有什麼辦法降低時間複雜度。
代碼如下:(遞歸,可能會超出時間上限)
1 def wawa(step): 2 if step==1: 3 way=1 4 elif step==2: 5 way=2 6 else: 7 way=wawa(step-1)+wawa(step-2) 8 return way 9 10 step=eval(input()) 11 print(wawa(step))
(迴圈,思路簡單而且高速)
1 def wawa(step): 2 if step==1 or step==2: 3 return step 4 a=1 5 b=2 6 c=0 7 for i in range(3,step+1): 8 c=a+b 9 a=b 10 b=c 11 return c 12 13 step=eval(input()) 14 print(wawa(step))
四、百分製成績轉換五分制(迴圈)
編寫一個學生成績轉換程式,用戶輸入百分制的學生成績,成績大於或等於90且小於或等於100的輸出為“A”,成績大於或等於80且小於90的輸出為“B”,成績大於或等於70且小於80的輸出為“C”,成績大於或等於60且小於70的輸出為“D”,成績小於60的輸出為“E”。輸入數據不合法時輸出“data error!”用戶可反覆輸入成績進行轉換,輸入負數時輸出“end”並結束程式。
代碼如下:
1 flag=1 2 while flag: 3 grade=input() 4 try: 5 grade=eval(grade) 6 if 100>=grade>=90: 7 print('A') 8 elif 90>grade>=80: 9 print('B') 10 elif 80>grade>=70: 11 print('C') 12 elif 70>grade>=60: 13 print('D') 14 elif 60>grade>=0: 15 print('E') 16 elif grade<0: 17 print('end') 18 flag=0 19 else: 20 print('data error!') 21 except: 22 print('data error!')
五、質數判斷
質數(Prime Number)又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。
本題要求實現一個函數,判斷參數是否是質數,是的話返回True,否則返回False。
代碼如下:
1 def isPrime(num): 2 import math 3 for i in range(2,int(math.sqrt(num))+1): 4 if num%i==0: 5 return 0 6 return 1 7 8 num=int(input()) 9 if isPrime(num): 10 print('yes') 11 else: 12 print('no')
六、月份縮寫
編寫一個程式,用戶輸入一個月份的數字,輸出月份的縮寫。
代碼如下:
1 months={1: 'Jan.',2:'Feb.',3:'Mar.',4:'Apr.',5:'May.',6:'Jun.',7:'Jul.',8:'Aug.',9:'Sep.',10:'Oct.',11:'Nov.',12:'Dec.'} 2 str1=int(input()) 3 print(months[str1])
七、分段函數描述
輸入x,按上述分段函數求解。如果輸入超出範圍的x則輸出“ERROR” 。
代碼如下:
1 x=eval(input()) 2 if -1<x<=0: 3 print('f(x)=-10') 4 elif 0<x<=1: 5 print('f(x)=5') 6 elif 1<x<=2: 7 print('f(x)=9.6') 8 else: 9 print('ERROR')
八、今年多少天?
閏年366天,其他年份365天。普通年(不能被100整除的年份)能被4整除的為閏年。(如2004年就是閏年,1999年不是閏年);
世紀年(能被100整除的年份)能被400整除的是閏年。(如2000年是閏年,1900年不是閏年);
用戶輸入一個正整數,代表年份,輸出該年有多少天?
代碼如下:
1 year=int(input()) 2 if year%100==0:#世紀年 3 if year%400==0: 4 print('366') 5 else: 6 print('365') 7 else: 8 if year%4==0: 9 print('366') 10 else: 11 print('365')
九、驗證碼較驗
用戶登錄網站經常需要輸入驗證碼,驗證碼包含大小寫字母和數字,隨機出現。用戶輸入驗證碼時不區分大小寫,只要各字元出現順序正確即可通過驗證。
請寫一個程式完成驗證碼的匹配驗證,假設當前顯示的驗證碼是'Qs2X'。
如果用戶輸入驗證碼正確,輸出“驗證碼正確”,輸入錯誤時輸出“驗證碼錯誤,請重新輸入”。
代碼如下:
1 str1='Qs2X' 2 str2=input() 3 if str1.lower()==str2.lower(): 4 print('驗證碼正確') 5 else: 6 print('驗證碼錯誤,請重新輸入')
十、奇數數列求和
求1+3+5+……+(2n-1)前n項和。
代碼如下:(這個真的是簡單到不想發上來、、、、、)
1 i=int(input()) 2 s=0 3 for i in range(1,i*2,2): 4 s=s+i 5 print(s)