一、目的:
1、 掌握建立和執行Python文件的方法;
2、 掌握if語句實現分支結構的程序設計方法;
3、 掌握for和while語句實現循環結構的程序設計方法;
4、 掌握函數的定義和使用方法。
二、內容:
1. 輸入一個百分制成績,要求輸出成績等級A、B、C、D、E,其中90~100分為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。
要求:1)用if語句實現;2)輸入百分制成績后要判斷該成績的合理性,對不合理的成績應輸出出錯信息。
代碼:
1 a=eval(input('請輸入成績:')) 2 if a<0 or a>100 or a%1!=0: 3 print('您輸入的成績不合理,請檢查后重新輸入') 4 elif 90<=a<=100: 5 print('成績等級:A') 6 elif 80<=a<=89: 7 print('成績等級:B') 8 elif 70<=a<=79: 9 print('成績等級:C') 10 elif 60<=a<=69: 11 print('成績等級:D') 12 else: 13 print('成績等級:E')
運行結果:
2. 籃球比賽是高分的比賽,領先優勢可能很快被反超。作為觀眾,希望能在球賽即將結束時,就提早知道領先是否不可超越。體育作家Bill James發明了一種算法,用於判斷領先是否“安全”。
算法描述: 1)獲取領先的分數 ,減去3分;
2)如果目前是領先隊控球,則加0.5;否則減0.5(數字小於0則變成0);
3)計算平方后的結果;
4)如果得到的結果比當前比賽剩余時間的秒數大,則領先是“安全”的。
請編寫程序實現上述算法的功能,並給出運行結果。
代碼:
1 grade=eval(input('請輸入領先分數:')) 2 time=eval(input('請輸入剩余時間:')) 3 t=grade-3 4 w=input('目前是否為領先隊控球(Y or N):') 5 if w == 'Y' or w == 'y': 6 g=(t+0.5)**2 7 else: 8 g=t-0.5 9 if g<=0: 10 g=0 11 g=g**2 12 if g>time: 13 print('領先是“安全”的') 14 else: 15 print('領先是“不安全”的')
運行結果:
3.根據y=1+3-1+3-1+……+(2n-1)-1,求:
(1) y<3時的最大n值。
(2) 與(1)的n值對應的y值。
代碼:
1 x=1 2 y=0 3 while y<3: 4 y=y+1/(2*x-1) 5 x=x+1 6 print('y<3時的最大n值為{}'.format(x-1)) 7 print('與(1)的n值對應的y值為{}'.format(y-1/(2*x-1)))
運行結果:
4. 小明單位發了100元的購物卡,小明到超市買三類洗化用品:洗發水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些購買組合?
代碼:
1 money=100 2 n=money//15 3 for i in range(n,-1,-1): 4 m=(money-i*15)//5 5 for j in range(m,-1,-1): 6 k=(money-i*15-j*5)//2 7 if (money-i*15-j*5)%2==0: 8 print('可選擇的購買組合:\t\t購買洗發水 {} 瓶,香皂 {} 塊,牙刷 {}個。'.format(i,j,k))
運行結果:
5. 設計一個猜數游戲。首先由計算機產生一個[1,100]之間的隨機整數,然后由用戶猜測所產生的隨機數。根據用戶猜測的情況給出不同提示,如猜測的數大於產生的數,則顯示“High”,小於則顯示“Low”,等於則顯示“You won !”,游戲結束。用戶最多可以猜7次,如果7次均未猜中,則顯示“You lost !”,並給出正確答案,游戲結束。游戲結束后,詢問用戶是否繼續游戲,選擇“Y”則開始一輪新的猜數游戲;選擇“N”則退出游戲。
代碼:
1 chose = 'y' 2 while chose=='Y' or chose=='y': 3 import random 4 num = random.randint(1,100) 5 def judge(b): 6 if b == num: 7 return 1 8 else: 9 return 0 10 for i in range(1,8): 11 b=eval(input('請輸入您第{}次所猜的整數:'.format(i))) 12 if judge(b)==1: 13 print("You won !") 14 break 15 elif b > num: 16 print("high") 17 elif b < num: 18 print("low") 19 if judge(b)==0: 20 print("You lost !") 21 chose=input('請輸入Y(y)繼續進行游戲,N(n)退出游戲:') 22 while chose != 'Y' and chose != 'y' and chose != 'N' and chose != 'n': 23 print('輸入有誤,請重新輸入Y(y)繼續進行游戲,N(n)退出游戲:',end = '') 24 chose=input()
運行結果:
6. 建立1個包含10個字符的字符串,並根據鍵盤輸入的數字n輸出字符串中的第n個字符。當n值超過字符串的索引時,自動轉為輸出字符串中的最后1個字符。
要求:用try語句實現。
代碼:
1 n=int(input('請輸入數字n:')) 2 a='pengyuanyu' 3 try: 4 print(a[n-1]) 5 except: 6 print(a[9])
運行結果:
7. 編寫函數,該函數可以輸入任意多個數,函數返回輸出所有輸入參數的最大值、最小值和平均值。
代碼:
1 import numpy as py 2 x=input('請輸入一組數並用空格隔開:') 3 def f(x): 4 lis =list(x.split(' ')) 5 for i in range(len(lis)): 6 lis[i]=eval(lis[i]) 7 print('該組數值的最大值為:',max(lis)) 8 print('該組數值的最小值為:',min(lis)) 9 print('該組數值的平均值為:',py.mean(lis)) 10 f(x)
運行結果:
8. 一個人趕着鴨子去每個村庄賣,每經過一個村子賣去所趕鴨子的一半又一只。這樣他經過了七個村子后還剩兩只鴨子,問他出發時共趕多少只鴨子?
要求:利用遞歸函數編程實現。
代碼:
1 def f(n): 2 if n == 8: 3 return 2 4 else: 5 sum = f(n+1)*2+2 6 return sum 7 print('一共有{}只鴨子'.format(f(1)))
運行結果:
三、總結
通過本次實驗,掌握了建立和執行Python文件的方法;掌握了if語句實現分支結構的程序設計方法;掌握了for和while語句實現循環結構的程序設計方法;掌握了函數的定義和使用方法。學到了很多知識,通過實踐對基礎知識更加熟練。