十三道Python練習題


一、完美立方

  編寫一個程序,對任給的正整數N (N≤100),尋找所有的四元組(a, b, c, d),使得a^3= b^3 + c^3 + d^3,其中a,b,c,d 大於 1, 小於等於N。

  輸入一個正整數N (N≤100),輸出 每行輸出一個完美立方。輸出格式為: Cube = a, Triple = (b,c,d) 其中a,b,c,d所在位置分別用實際求出四元組值代入。
  請按照a的值,從小到大依次輸出。當兩個完美立方 等式中a的值相同,則b值小的優先輸出,仍相同則c值小的優先輸出,再相同則d值小的先輸出。


n = int(input())
cube = [0]
for i in range(2, n+1):
  cube.append(i**3)
for a in range(3,n):
  for b in range(0,a-2):
    if cube[a] < (cube[b] + cube[b+1] + cube[b+2]):
      break
  for c in range(b+1,a-1):
    if cube[a] < (cube[b] + cube[c] + cube[c+1]):
      break
  for d in range(c+1,a):
    if cube[a] == (cube[b] + cube[c] + cube[d]):
      print("Cube = %d,Tripe = (%d,%d,%d)" %(a+1,b+1,c+1,d+1))

二、人民幣和美元轉換

  匯率為:1美元=6.78人民幣。

  輸入格式為:USD10,輸出格式為:RMB67.8(注意中間沒有是空格的)。


str1=input()
import re
num=int(''.join(re.findall('\d+',str1)))
if 'RMB' in str1:
    print('USD','%.2f' %(num/6.78),sep='')
elif 'USD' in str1:
    print('RMB','%.2f' %(num*6.78),sep='')

三、凱撒密碼

  輸入一串字母,將它們都加3,如果超過122(z的ASCII值)就減掉26。

  比如 ‘xyz’ 會變成 ‘abc’ 。


original=input()
cipher=''
for i in original:
    a=ord(i)
    if 97<=a<=119:
        cipher+=chr(a+3)
    elif 120<=a<=122:
        cipher+=chr(a+3-26)
    else:
        cipher+=i
print(cipher) 

四、天天向上的力量 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])

十、分段函數描述

  img

  輸入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年不是閏年);

  用戶輸入一個正整數,代表年份,輸出該年有多少天?

  代碼如下:

'''
遇到問題沒人解答?小編創建了一個Python學習交流QQ群:857662006 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
 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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM