Python —— 3 習題練習


1. 輸入一個整數n,判斷其能否同時被5和7整除,如能則輸出“xx能同時被5和7整除”,否則輸出“xx不能同時被5和7整除”。要求xx為輸入的具體數據。
1 n = int(input("請輸入一個整數:"))
2 if n % 5 == 0 and n % 7 == 0:
3     print("%d能同時被5和7整除" % n)
4 else:
5     print("%d不能同時被5和7整除" % n)

2. 輸入一個百分制的成績,經判斷后輸出該成績的對應等級。其中,90分以上為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。
 1 score = float(input("請輸入百分制的成績:"))
 2 if (100 >= score) and (score >= 90):
 3     print("A")
 4 elif score >= 80:
 5     print("B")
 6 elif score >= 70:
 7     print("C")
 8 elif score >= 60:
 9     print("D")
10 else:
11     print("E")

3. 某百貨公司為了促銷,采用購物打折的辦法。消費1000元以上者,按九五折優惠;消費2000元以上者,按九折優惠;消費3000元以上者,按八五折優惠;消費5000元以上者,按八折優惠。編寫程序,輸入購物款數,計算並輸出優惠價。
consume = float(input("購物款數:"))
if consume >= 5000:
    print("優惠價:%.2f" % (consume*0.8))
elif consume >= 3000:
    print("優惠價:%.2f" % (consume * 0.85))
elif consume >= 2000:
    print("優惠價:%.2f" % (consume * 0.9))
elif consume >= 1000:
    print("優惠價:%.2f" % (consume * 0.95))

4. 編寫一個求整數n的階乘(n!)的程序
 1 # 循環實現
 2 n = int(input("請輸入一個正整數:"))
 3 factorial = 1
 4 for i in range(n, 0, -1):
 5     factorial *= i
 6 print("n! = %d" % factorial)
 7 # 遞歸實現
 8 i = int(input("請輸入一個正整數:"))
 9 def func(i):
10     if i==1:
11         return 1
12     else:
13         return func(i-1)*i
14 print("n! = %d" % func(i))
 
        
5. 編寫程序,求1!+3!+5!+7!+9!
 1 L = [1, 3, 5, 7, 9]
 2 def func(n):
 3     if n == 1:
 4         return 1
 5     else:
 6         return n * func(n-1)
 7 factorial = 0
 8 for i in L:
 9     factorial += func(i)
10 print(factorial)

6. 編寫程序,計算下列公式中s的值(n是運行程序時輸入的一個正整數)
 1 # (1) s = 1 + (1 + 2) + (1 + 2 + 3) + ··· + (1 + 2 + 3 + ··· + n)
 2 def func(n):
 3     if n == 1:
 4         return 1
 5     else:
 6         return n+func(n-1)
 7 if __name__=="__main__":
 8     s = 0
 9     n = int(input("請輸入正整數:"))
10     for i in range(1, n+1):
11         s += func(i)
12     print(s)
13 
14 # (2) s = 12 + 22 + 32 + ··· + (10*n + 2) 
15 def func(n):
16         s = 0
17         for i in range(1, n+1):
18             s += (10 * i + 2)
19         return s
20 if __name__=="__main__":
21     n = int(input("請輸入正整數:"))
22     s = func(n)
23     print(s)
24 
25 # (3) s = 1*2 - 2*3 + 3*4 - 4*5 + ··· + (-1)^(n-1)*n*(n+1)
26 def func(n):
27     s = 0
28     for i in range(1, n+1):
29         s += ((-1)**(i-1) * i * (i+1))
30     return s
31 if __name__=="__main__":
32     n = int(input("請輸入正整數:"))
33     s = func(n)
34     print(s)

7. 百馬百瓦問題:有100匹馬馱100塊瓦,大馬馱3塊,小馬馱2塊,兩個馬駒馱1塊。問大馬、小馬、馬駒各有多少匹?
1 for i in range(100):
2     for j in range(100):
3         for k in range(100):
4             if(3*i+2*j+0.5*k) == 100 and (i+j+k) == 100:
5                 print("大馬:%d匹  小馬:%d匹  馬駒:%d匹" % (i, j, k))

8. 有一個數列,其前三項分別為1、2、3,從第四項開始,每項均為其相鄰的前三項之和的1/2,問:該數列從第幾項開始,其數值超過1200?
 1 li = [1, 2, 3]
 2 sm = 0
 3 num = 0
 4 n = -1
 5 while len(li) >= 3:
 6     n += 1
 7     for i in li[n:n+3]:
 8         sm += i
 9         num = sm * 0.5
10     li.append(num)
11     print(li)
12     if li[n+3] >= 1200:
13         break
14 print("列表從%d項開始,其數值超過1200"% (len(li)))

9. 找出1~100的全部同構數。同構數是這樣一種數:它出現在它的平方數的右端。列如,5的平方是25,5是25中右端的數,5就是同構數,25也是一個同構數,它的平方是625。
1 import math
2 for i in range(1, 101):
3     twice = math.pow(i, 2)
4     g = twice % 10
5     s = twice // 10 % 10
6     b = twice // 100 % 10
7     if (i == g) or (i == s*10+g) or (i == b*100+s*10+g):
8       print(i, end=" ", flush=True)

10.猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個,第二早上將剩下的桃子吃掉一半,又多吃一個。以后每天早上都吃前一天剩下的一半再加一個。到第10天早上想再吃時,發現只剩下一個桃子。求第一天共摘了多少個桃子。
 1 # 剩下的桃子
 2 # n-(n/2+1)= x
 3 # 2n-n -2 = 2x
 4 # n = 2x+2
 5 n = 1
 6 s = 0
 7 for i in range(9, 0, -1):
 8     print(i, end=" ")
 9     if i == 1:
10         print("第%d天剩下%d個桃子" % (i, (n*2)+2))
11         s = (n*2)+2
12         print("第%d天共摘了%d個" % (i, (2 * s + 2)))
13     n = (n*2)+2

11. 開發猜數字小游戲。計算機隨機生成100以內的數字,玩家去猜,如果猜的數字過大或過小都會給出提示直到猜中該數,顯示“恭喜!你猜對了”,同時要統計玩家猜的次數
 1 import random
 2 num = random.randrange(100)
 3 total = 0
 4 while 1:
 5     n = int(input("請輸入您猜的數:"))
 6     total += 1
 7     if n == num:
 8         print('恭喜!')
 9         break
10     elif n > num:
11         print('猜的數字過大')
12     else:
13         print('猜的數字過小')
14 print('猜的次數:%d次' % total)

12. 數字重復統計問題(1)隨機生成1000個整數,數字的范圍為[20,100](2)升序輸出所有不同的數字及其每個數字重復的次數
 1 import random
 2 num = []
 3 for i in range(1001):
 4     num.append(random.randrange(20, 101))
 5 # 升序輸出所有不同的數字
 6 num.sort()
 7 n = set(num)
 8 # 集合遍歷
 9 for i in n:
10     print(i, end=" ", flush=True)
11 # 每個數字重復的次數
12 for i in range(20, 101):
13     c = num.count(i)
14     print("%d出現了%d次" % (i, c))

13. 求每個學生的平均成績,結果保留2位小數
1 # 學生成績 s ={"Teddy":[100,90,90],"Sandy":[100,90,80],"Elmo":[90,90,80]}
2 # 輸出結果為:{"Teddy": 93.3,"Sandy": 90,"Elmo": 86.7}
3 s = {"Teddy": [100, 90, 90], "Sandy": [100, 90, 80], "Elmo": [90, 90, 80]}
4 for k, v in s.items():
5     avg_s = sum(v)/float(len(s.get(k)))
6     avg = float(format(avg_s, '.1f'))
7     s[k] = avg
8 print(s, end=" ", flush=True)

14. 現有一個字典存放學生學號和三門課程成績
1 # dictScore = {"101":[67,88,45],"102":[97,68,85],"103":[98,97,95],"104":[67,48,45],"105":[82,58,75],"106":[96,49,65]}
2 # 返回每一個學生學號和自己最高分
3 dictScore = {"101": [67, 88, 45], "102": [97, 68, 85], "103": [98, 97, 95], "104": [67, 48, 45], "105": [82, 58, 75], "106": [96, 49, 65] }
4 for k, v in dictScore.items():
5     print(k, max(v))

15. 求1~100的素數
1 import math
2 for i in range(2,101):
3     flag = True
4     for j in range(2,int(math.sqrt(i))+1):
5         if(i%j)==0:
6            flag = False
7            break
8     if flag:
9         print(i,end=" ")
 
        

 

 
        
 
 
 
 

 

 

 


免責聲明!

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



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