8道Python基礎練習題


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

要求:
1)用if語句實現;
2)輸入百分制成績后要判斷該成績的合理性,對不合理的成績應輸出出錯信息。

代碼:

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發明了一種算法,用於判斷領先是否“安全”。

算法描述:

1)獲取領先的分數 ,減去3分;

2)如果目前是領先隊控球,則加0.5;否則減0.5(數字小於0則變成0);

3)計算平方后的結果;

4)如果得到的結果比當前比賽剩余時間的秒數大,則領先是“安全”的。

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

代碼:

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,求:

(1) y<3時的最大n值。

(2) 與(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)))

運行結果:
在這里插入圖片描述

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

代碼:

#Python學習交流群:531509025
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))

運行結果:
在這里插入圖片描述

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()

運行結果:
在這里插入圖片描述
6. 建立1個包含10個字符的字符串,並根據鍵盤輸入的數字n輸出字符串中的第n個字符。當n值超過字符串的索引時,自動轉為輸出字符串中的最后1個字符。

要求:用try語句實現。

代碼:

#Python學習交流群:531509025

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

運行結果:
在這里插入圖片描述
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)

運行結果:
在這里插入圖片描述
8. 一個人趕着鴨子去每個村庄賣,每經過一個村子賣去所趕鴨子的一半又一只。這樣他經過了七個村子后還剩兩只鴨子,問他出發時共趕多少只鴨子?

要求:利用遞歸函數編程實現。

代碼:

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

運行結果:
在這里插入圖片描述


免責聲明!

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



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