14道基礎Python練習題(附答案)

1. 輸入一個百分制成績

,要求輸出成績等級A、B、C、D、E,其中90~100分為A,80~89分為B,70~79分為C,60~69分為D,60分以下為E。

要求:

  • if語句實現;
  • 輸入百分制成績後要判斷該成績的合理性,對不合理的成績應輸出出錯信息。

代碼:

a=eval(input('請輸入成績:'))
if a<0 or a>100 or a%1!=0:
    print('您輸入的成績不合理,請檢查後重新輸入')
elif 90<=a<=100:
    print('成績等級:A')
elif 80<=a<=89:
    print('成績等級:B')
elif 70<=a<=79:
    print('成績等級:C')
elif 60<=a<=69:
    print('成績等級:D')
else:
    print('成績等級:E')


輸出:

2. 籃球比賽案例

籃球比賽是高分的比賽,領先優勢可能很快被反超。作為觀眾,希望能在球賽即將結束時,就提早知道領先是否不可超越。體育作傢Bill James發明瞭一種算法,用於判斷領先是否“安全”。

算法描述:

  • 獲取領先的分數 ,減去3分;
  • 如果目前是領先隊控球,則加0.5;否則減0.5(數字小於0則變成0);
  • 計算平方後的結果;
  • 如果得到的結果比當前比賽剩餘時間的秒數大,則領先是“安全”的。

請編寫程序實現上述算法的功能,並給出運行結果。

代碼:

grade=eval(input('請輸入領先分數:'))
time=eval(input('請輸入剩餘時間:'))
t=grade-3
w=input('目前是否為領先隊控球(Y or N):')
if w == 'Y' or w == 'y':
    g=(t+0.5)**2
else:
    g=t-0.5
    if g<=0:
       g=0
    g=g**2
if g>time:
    print('領先是“安全”的')
else:
    print('領先是“不安全”的')


輸出:

3.根據y=1+3-1+3-1+……+(2n-1)-1,求:

  • y<3時的最大n值。
  • 與(1)的n值對應的y值。

代碼:

x=1
y=0
while y<3:
    y=y+1/(2*x-1)
    x=x+1
print('y<3時的最大n值為{}'.format(x-1))
print('與(1)的n值對應的y值為{}'.format(y-1/(2*x-1)))


輸出:

y<3時的最大n值為57
與(1)的n值對應的y值為2.9945914066381527

4. 購物卡案例

小明單位發瞭100元的購物卡,小明到超市買三類洗化用品:洗發水(15元)、香皂(2元)、牙刷(5元)。要把100元正好花掉,可有哪些購買組合?

代碼:

money=100
n=money//15
for i in range(n,-1,-1):
    m=(money-i*15)//5
    for j in range(m,-1,-1):
        k=(money-i*15-j*5)//2
        if (money-i*15-j*5)%2==0:
            print('可選擇的購買組合:\t\t購買洗發水 {} 瓶,香皂 {} 塊,牙刷 {}個。'.format(i,j,k))


輸出:

可選擇的購買組合:  購買洗發水 6 瓶,香皂 2 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 6 瓶,香皂 0 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 5 瓶,香皂 5 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 5 瓶,香皂 3 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 5 瓶,香皂 1 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 4 瓶,香皂 8 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 4 瓶,香皂 6 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 4 瓶,香皂 4 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 4 瓶,香皂 2 塊,牙刷 15個。
可選擇的購買組合:  購買洗發水 4 瓶,香皂 0 塊,牙刷 20個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 11 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 9 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 7 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 5 塊,牙刷 15個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 3 塊,牙刷 20個。
可選擇的購買組合:  購買洗發水 3 瓶,香皂 1 塊,牙刷 25個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 14 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 12 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 10 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 8 塊,牙刷 15個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 6 塊,牙刷 20個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 4 塊,牙刷 25個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 2 塊,牙刷 30個。
可選擇的購買組合:  購買洗發水 2 瓶,香皂 0 塊,牙刷 35個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 17 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 15 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 13 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 11 塊,牙刷 15個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 9 塊,牙刷 20個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 7 塊,牙刷 25個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 5 塊,牙刷 30個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 3 塊,牙刷 35個。
可選擇的購買組合:  購買洗發水 1 瓶,香皂 1 塊,牙刷 40個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 20 塊,牙刷 0個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 18 塊,牙刷 5個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 16 塊,牙刷 10個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 14 塊,牙刷 15個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 12 塊,牙刷 20個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 10 塊,牙刷 25個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 8 塊,牙刷 30個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 6 塊,牙刷 35個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 4 塊,牙刷 40個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 2 塊,牙刷 45個。
可選擇的購買組合:  購買洗發水 0 瓶,香皂 0 塊,牙刷 50個。

5. 設計一個猜數遊戲

首先由計算機產生一個[1,100]之間的隨機整數,然後由用戶猜測所產生的隨機數。根據用戶猜測的情況給出不同提示,如猜測的數大於產生的數,則顯示“High”,小於則顯示“Low”,等於則顯示“You won !”,遊戲結束。用戶最多可以猜7次,如果7次均未猜中,則顯示“You lost !”,並給出正確答案,遊戲結束。遊戲結束後,詢問用戶是否繼續遊戲,選擇“Y”則開始一輪新的猜數遊戲;選擇“N”則退出遊戲。

代碼:

chose = 'y'
while chose=='Y' or chose=='y':
    import random
    num = random.randint(1,100)
    def judge(b):
        if b == num:
            return 1
        else:
            return 0
    for i in range(1,8):
        b=eval(input('請輸入您第{}次所猜的整數:'.format(i)))
        if judge(b)==1:
            print("You won !")
            break
        elif b > num:
            print("high")
        elif b < num:
            print("low")
    if judge(b)==0:
        print("You lost !")
    chose=input('請輸入Y(y)繼續進行遊戲,N(n)退出遊戲:')
    while chose != 'Y' and chose != 'y' and chose != 'N' and chose != 'n':
        print('輸入有誤,請重新輸入Y(y)繼續進行遊戲,N(n)退出遊戲:',end = '')
        chose=input()


輸出:

請輸入您第1次所猜的整數:2
low
請輸入您第2次所猜的整數:5
low
請輸入您第3次所猜的整數:8
low
請輸入您第4次所猜的整數:7
low
請輸入您第5次所猜的整數:50
low
請輸入您第6次所猜的整數:60
low
請輸入您第7次所猜的整數:80
high
You lost !
請輸入Y(y)繼續進行遊戲,N(n)退出遊戲:n

6.建立1個包含10個字符的字符串

建立1個包含10個字符的字符串,並根據鍵盤輸入的數字n輸出字符串中的第n個字符。當n值超過字符串的索引時,自動轉為輸出字符串中的最後1個字符。

要求:

  • 用try語句實現。

代碼:

n=int(input('請輸入數字n:'))
a='pengyuanyu'
try:
    print(a[n-1])
except:
    print(a[9])


輸出:

請輸入數字n:5
y

7. 編寫函數

該函數可以輸入任意多個數,函數返回輸出所有輸入參數的最大值、最小值和平均值。

代碼:

import numpy as py
x=input('請輸入一組數並用空格隔開:')
def f(x):
    lis =list(x.split(' '))
    for i in range(len(lis)):
        lis[i]=eval(lis[i])
    print('該組數值的最大值為:',max(lis))
    print('該組數值的最小值為:',min(lis))
    print('該組數值的平均值為:',py.mean(lis))
f(x)


輸出:

請輸入一組數並用空格隔開:5 4 10
該組數值的最大值為: 10
該組數值的最小值為: 4
該組數值的平均值為: 6.333333333333333

8. 趕鴨子

一個人趕著鴨子去每個村莊賣,每經過一個村子賣去所趕鴨子的一半又一隻。這樣他經過瞭七個村子後還剩兩隻鴨子,問他出發時共趕多少隻鴨子?

要求:

  • 利用遞歸函數編程實現。

代碼:

def f(n):
    if n == 8:
        return 2
    else:
        sum = f(n+1)*2+2
        return sum
print('一共有{}隻鴨子'.format(f(1)))


輸出:

一共有510隻鴨子

9.將復數2.3×103-1.34×10-3j賦值給變量A,並分別提取A的實部和虛部。

代碼:

>>> A=complex(2.3e3,-1.34e-3)
>>> print(A.real)
2300.0
>>> print(A.imag)
-0.00134

10.計算下列表達式的值

代碼:

import math
z1=(2*(math.sin(math.pi*85/180)))/(1+math.e**2)
print(z1)


輸出:

0.23749863783095462

其中x是從鍵盤獲取的任意實數。

代碼:

import math
x=int(input('請輸入整數:'))
z2=1/2*math.log(x+math.sqrt(1+math.pow(x, 2)))
print(z2)


輸出:

請輸入整數:5
1.1562191706363762

11.建立一個包含10個字符的字符串A,然後對該字符串進行如下操作:

  • (1)計算輸出字符串的長度;
  • (2)從第1個字符開始,每間隔2個字符取1個字符,組成子字符串B;
  • (3)將字符串A倒過來重新排列產生新的字符串C;
  • (4)將字符串A的前4個字符與字符串C的後5個字符進行組合,產生字符串D。

代碼:

 A=input()
 >>> len(A)
 >>> B=print(A[::3])
 >>> C=print(A[::-1])
 >>> D=print(A[:3]+C[-5:])

12.分別格式化輸出0.002178對應的科學表示法形式

分別格式化輸出0.002178對應的科學表示法形式、具有4位小數精度的浮點數形式和百分數形式,並將輸出寬度設定為10、居中對齊、星號*填充。

代碼:

x=0.002178
print("x對應的科學表示法形式為:",("%e"%x).center(10,'*'))
print('x具有4位小數精度的浮點數形式為:',('{0:.4f}'.format(x)).center(10,'*'))
print('x百分數形式為:',(('{0:.2f}%'.format(x*100)).center(10,'*')))


輸出:

x對應的科學表示法形式為: 2.178000e-03
x具有4位小數精度的浮點數形式為: **0.0022**
x百分數形式為: **0.22%***

13.編寫程序

從鍵盤輸入一個1~7的數字,格式化輸出對應數字的星期字符串名稱。如:輸入3,返回“您輸入的是星期三”。

代碼:

n =int(input('輸入一個1~7的數字:'))
if(n==1):
    print("您輸入的是星期一")
elif(n==2):
    print("您輸入的是星期二")
elif(n==3):
    print("您輸入的是星期三")
elif(n==4):
    print("您輸入的是星期四")
elif(n==5):
    print("您輸入的是星期五")
elif(n==6):
    print("您輸入的是星期六")
elif(n==7):
    print("您輸入的是星期日")


輸出:

輸入一個1~7的數字3
您輸入的是星期三

14.數字加密遊戲

編程程序,從鍵盤任意輸入1個4位數,將該數字中的每位數與7相乘,然後取乘積結果的個位數對該數字進行替換,最後得到1個新的4位數。

代碼:

n = int(input('任意輸入1個4位數:'))
if 1000<=n<=9999:
    a=n%10
    b=(n-a)%100/10
    c=(n-a-10*b)%1000/100
    d=(n-a-10*b-100*c)%10000/1000
    a=a*7%10
    b=b*7%10
    c=c*7%10
    d=d*7%10
    n=1000*d+100*c+10*b+a
    print(int(n))
elif n<=1000 or n>=9999:
    print("您輸入的數字不符合要求,請輸入一個四位數字")


輸出:

任意輸入1個4位數:111
您輸入的數字不符合要求,請輸入一個四位數字

任意輸入1個4位數:6666
2222

到此這篇關於14道基礎Python練習題(附答案)的文章就介紹到這瞭,更多相關Python練習題內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: