Python PTA期末


6-1 接收n個數字,求這些參數之和 (3 分)

接收n個數字,求這些參數數字的和。

def sum_func(*args):
    s=sum(args)
    return s

6-2 本題是一個demo函數,通過本程序體會默認值參數的特點。 (3 分)

本題是一個demo函數,通過本程序體會默認值參數的特點。

def demo(a,b,c=5):
    print(a,b,c)
    return

6-3 本題是一個demo函數,通過本程序體會關鍵參數的特點。

本題是一個demo函數,通過本程序體會關鍵參數的特點

def demo(a,b,c):
    print("{} {} {}".format(a,b,c))

 

6-4 本題是一個demo函數,通過本程序體會位置參數的特點。 (3 分)

 本題是一個demo函數,通過本程序體會位置參數的特點。
def demo(a,b,c):
    print("{} {} {}".format(a,b,c))
    return

6-5 計算工資 (3 分)

編寫函數pay(),帶兩個輸入參數:小時工資和上周員工工作了的小時數。函數計算並返回員工的工資。加班工資的計算方法如下:大於40小時但小於或等於60小時按平時小時薪酬的1.5倍給薪;大於60小時則按平時小時薪酬的2倍給薪。

def pay(salaryHour, hours):
    if 40<hours<=60:
        p=salaryHour*(1.5*(hours-40)+40)
    if hours>60:
        p=salaryHour*(2*(hours-60)+40+1.5*20)
    if hours<40:
        p=salaryHour*hours
    return p

  

7-1 計算M和N的多個結果 (5 分)

用戶輸入兩個數M和N(用兩個input語句輸入),其中N是整數,計算M和N的5種數學運算結果,並依次輸出,結果間用空格分隔。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

5種數學運算分別是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬

M與N的和、M與N的乘積、M的N次冪、M除N的余數、M和N中較大的值

x=eval(input())
y=eval(input())
a=x+y
b=x*y
c=x**y
d=x%y
e=max(x,y)
print(a,b,c,d,e)

  

7-2 給顧客找零錢的方案 (5 分)

 

這是一個編程題。題目:本題目要求掌握數值運算中的整數除法和求余數運算,並掌握輸入輸出的方法。 商店需要找錢給顧客,現在有足夠的張數,面值分別是50元5元和1元。輸入一個整數金額值給出找錢方案,假設人民幣足夠多,且優先使用面額大的錢幣。

s=eval(input())
m50=s//50
m5=s//50%5
m1=s%50%5
print("50元面額需要的張數:{}",format(m50))
print("5元面額需要的張數:{}",format(m5))
print("1元面額需要的張數:{}",format(m1))

  

7-3 整數的二進制相加 (5 分)

 

輸入兩個整數,大小在[0,63]之間。求它們的二進制和,二進制用8位表示。

x,y=eval(input()),eval(input())
print("{:0>8b}".format(x))
print("{:0>8b}".format(y))
print("{:->8}".format("-"))
print("{:0>8b}".format(x+y))

  

7-4 計算長方形的周長和面積 (5 分)

 

輸入長方形的長和寬,要求計算長方形的周長和面積。

s=input().split()
a,b=eval(s[0]),eval(s[1])
print("C = {}".format(2*(a+b)))
print("S = {}".format(a*b))

  

7-5 人民幣與美元匯率兌換程序 (5 分)

 

按照溫度轉換的設計思路,設計人民幣與美元匯率兌換程序,按照1美元=7人民幣的匯率 編寫一個雙向兌換程序

 

s=input()
if s[0]=='$':
    c=eval(s[1:])
    print("¥{:.2f}".format(7*c))
elif s[0]=='¥':
    f=eval(s[1:])
    print("${:.2f}".format(f/7))
else:
    print("輸入格式錯誤")

  

7-6 蟲子吃蘋果后,還剩下幾個完整蘋果 (5 分)

你買了一箱n個蘋果,很不幸的是買來的時候,箱子里混進了一條蟲子。蟲子每x小時能吃掉一個蘋果,假設蟲子在吃完一個蘋果之前不會吃另一個,那么經過y小時你還有多少個完整的蘋果?

s=input().split(",")
n,x,y=eval(s[0]),eval(s[1]),eval(s[2])
if y%x==0:
    print(n-y//x)
else:
    print(n-y//x-1)

 

7-7 輸出字符-單分支 (5 分)

 

輸入一個字符,如果是小寫字母,轉換為其大寫形式,其余字符不變。

s=input()
if s.islower():
    print(s.capitalize())
if s.isupper():
    print(s)
if s.isdigit():
    print(s)

  

 

7-8 數據比較 (5 分)

 

實現一個程序,用戶輸入四個數值(整數或浮點數)。先計算前三個數的平均值,然后把平均值與第四個數進行比較。如果相等,則程序在屏幕上輸出“Equal”,如果平均值大於第四個數則輸出“Larger”,否則輸出“Smaller”。

a=eval(input())
b=eval(input())
c=eval(input())
d=eval(input())
x=(a+b+c)/3
if x==d:
    print("Equal")
elif x>d:
    print("Larger")
else:
    print("Smaller")

 

7-9 統計輸入字符串中的單詞個數及單詞的平均長度(高教社,《Python編程基礎及應用》習題7-7) (5 分)

 

編寫一個程序,接受用戶輸入的一行英文句子(假設該句子僅由英文單詞及空格構成,不包括逗號等符號),統計並輸出該行句子包含的單詞個數及單詞的平均長度

 

s=input().split()
t=len(s)
m=0
for i in range(t):
    m=m+len(s[i])
print("{},{:.2f}".format(t,m/t))

 

7-10 對於給定的正整數N,求它的位數及其各位數字之和。 (5 分)

 

給定的正整數N,求它的位數及其各位數字之和。

s=input()
a=len(s)
b=0
for i in range(a):
    b=b+eval(s[i])
print(a,b)

 

7-11 jmu-python-統計成績 (5 分)

 

輸入一批學生成績,計算平均成績,並統計不及格學生人數。

sum=0
n=0
m=0
q=0
while n>=0:
    s=eval(input())
    sum=sum+s
    n=s
    m=m+1
    if s<60 and s>0:
        q=q+1
if m>1:
    av=(sum-n)/(m-1)
    print("平均分={:.2f},不及格人數={}".format(av,q))
else:
    print("沒有學生")

 

7-12 折紙問題 (5 分)

 

一張紙厚0.2mm, 問至少對折多少次后,紙的厚度超過珠穆朗瑪峰(8848m)

 

 

s=0.2/1000
i=0
while s<=8848:
    s=s*2
    i=i+1
print("折疊次數={}".format(i))
print("折疊后厚度={:.2f}".format(s))

 

7-13 jmu-python-素數 (5 分)

 

輸入一個數,判斷其是否素數。素數是大於1的自然數中,除了1和它本身以外不再有其他因數。

 

 

s=eval(input())
if s>1:
    for i in range(2,s):
        if s%i==0:
            print("{} is not prime".format(s))
            break
    else:
        print("{} is prime".format(s))
else:
    print("{} is not prime".format(s))

 

7-14 求1-n的奇數和 (6 分)

 

本題目要求讀入一個整數n,計算[1,n]之間奇數和。例如,輸入9,計算1+3+5+7+9的和

s=0
n=int(input())
if n%2==0:
    n=n-1
    while n>0:
        s=s+n
        n=n-2
else:
    while n>0:
        s=s+n
        n=n-2
print(s)

 

7-15 輸出不重復的字符 (5 分)

 

輸入一個字符串,把最左邊的10個不重復的字符(大小寫算不同字符)挑選出來。 如不重復的字符不到10個,則按實際數目輸出。

 

s=input()
t=[]
q=""
for i in range(len(s)):
    t.append(s[i])
m=list(set(s))
m.sort(key=t.index)
for i in range(len(m)):
    q=q+m[i]
print(q[:10])

  

7-16 淘淘不喜歡3、6、9 (5 分)

 

淘淘不喜歡數字3、6、9,在數數時,從1開始數,帶有這三個數字的都會跳過。如:1, 2, 4, 5, 7, 8, 10, 11, 12, 14, 15, 17, 18, 20, 21, 22, 24, 25, 27, 28, 40,…… 輸入一個n,求淘淘數到n時,她所數的所有數之和是多少?若n包含3、6、9,則顯示,淘淘不會數到這個數。

 

s=input()
a=0
if set(s)&{'3','6','9'}!=set():
    print("淘淘不會數{}".format(s))
else:
    for i in range(eval(s)+1):
        if set(str(i))&{'3','6','9'}==set():
            a=a+i
    print(a)

 

7-17 列表最值 (5 分)

 

本題目要求讀入一個由任意整數組成的列表,輸出所有元素中的最大值、最小值和平均值,要求平均值保留2位小數。

 

n=eval(input())
sum=0
for i in range(len(n)):
    sum=sum+n[i]
a=sum/len(n)
b=max(n)
c=min(n)
print("max = {}, min = {}, avg = {:.2f}".format(b,c,a))

 

7-18 調整菜單 (5 分)

 

本題目要求在1行內以逗號間隔輸入五菜一湯,菜單中有一個菜為“水煮肉片”,利用append和remove方法增加一個“東坡肉”,去掉一個“水煮肉片”,並輸出修改后的菜單。

n=input().split(",")
n.remove("水煮肉片")
n.append("東坡肉")
print(n)

  

 

7-19 求出歌手的得分 (5 分)

 

輸入一個正整數n (n>4),再輸入n個實數,求出歌手的得分(保留2位小數)。設一歌唱評獎晚會上有n(n>4)個評委為歌手打分.評分規則:每個評委依次打分,再去掉2個最高分和2個最低分,計算余下的分數平均值為歌手的得分.

n=int(input())
lo=[int(n) for n in input().split()]
lo.sort()
for i in range(0,4):
    num1=lo.pop(-1)
    lo.reverse()
sum=0
for j in range(len(lo)):
    sum+=lo[j]
li=sum/len(lo)
print("aver={:.2f}".format(li))

7-20 漢字表示的大寫數字金額 (5 分)

 

輸入一個整數金額,輸出漢字表示的大寫金額。假設輸入的金額數為正整數,且最大為12位數字。

from decimal import Decimal


def num2money_format(change_number):
    """
    .轉換數字為大寫貨幣格式( format_word.__len__() - 3 + 2位小數 )
    change_number 支持 float, int, long, string
    """
    format_word = ["圓",
                   "拾", "佰", "仟", "萬",
                   "拾", "佰", "仟", "億",
                   "拾", "佰", "仟", "萬",
                   "拾", "佰", "仟"]

    format_word_decimal = ['分', '角']

    format_num = {'0': "零", '1': "壹", '2': "貳", '3': "叄", '4': "肆", '5': "伍", '6': "陸", '7': "柒", '8': "捌", '9': "玖"}

    res = []  # 存放轉換結果

    if '.' not in change_number:
        # 輸入的數字沒有'.',為整元,沒有角和分
        k = len(change_number) - 1
        for i in change_number:
            res.append(format_num[i])
            res.append(format_word[k])
            k = k - 1

    elif '.' in change_number:
        float_2_change_num = Decimal(float(change_number)).quantize(Decimal("0.00"))
        # 如果輸入的字符串有“.”,則將其轉換為浮點數后,四舍五入取兩位小數
        # print(float_2_change_num)
        # print(type(float_2_change_num))

        depart = str(float_2_change_num).split('.')
        # 將四舍五入得到的浮點數整數部分和小數部分拆開,實現操作為:先將浮點數轉為字符串類型,再以“.”為分隔符分開
        # print(depart)

        int_part = depart[0]  # 整數部分
        # print(int_part)

        decimal_part = depart[1]  # 小數部分
        # print(decimal_part)

        k = len(int_part) - 1
        for i in int_part:  # 整數部分轉換
            res.append(format_num[i])
            res.append(format_word[k])
            k = k - 1

        m = len(decimal_part) - 1
        for i in decimal_part:  # 小數部分轉換
            res.append(format_num[i])
            res.append(format_word_decimal[m])
            m = m - 1

    return ''.join(res)  # 返回結果


your_money = input()
result = num2money_format(your_money)
print(result)

  

7-21 分班統計最喜歡的節目 (5 分)

 

學校舉辦的了迎新晚會,1班,2班兩個新生班各自統計好班里同學最喜歡的節目。節目編號由一個大寫字母代表。統計結果分別已經存放到兩個字典中。字典元素的鍵是節目編號,元素的值是相應節目獲得的票數,沒有人喜歡的節目不用記錄。如:字典{'Q':10,'A':22,'X':28} 表示,喜歡Q節目的有10位同學,喜歡A節目的有22位同學,喜歡X節目的有28位同學。輸入兩個班級的統計結果。將合並后的統計結果按節目編號的字母順序打印出來。(注意,如果1班有10個同學喜歡Q節目,2班有15個同學喜歡Q節目,則合並后,有25個同學喜歡Q節目)

 

a=eval(input())
b=eval(input())
s=[]
for i in a :
    for j in b :
        if i==j : a[i]+=b[j]
        if i == j: s.append(j)
for k in range(0,len(s)) :
    del b[s[k]]
a.update(b)
c=sorted(a.items(), key=lambda d:d[0])
lengh=len(dict(c))
x=list(dict(c).keys())
y=list(dict(c).values())
for i in range(lengh):
    print("{}:{}".format(x[i],y[i]))

 

7-24 字典的應用-找出出現次數最多的字符串(高教社,《Python編程基礎及應用》習題7-6) (5 分)

 

編寫一個程序,從鍵盤讀取未指定個數的字符串,一行一個,以字符串"q"為輸入結束標志("q"不列入統計范圍)。使用字典找出其中出現次數最多的字符串,打印該字符串及其出現次數。
注意:本題的測試用例中將保證只有一個字符串出現次數最多

# 從鍵盤讀取未指定個數的字符串,一行一個,以字符串"q"為輸入結束標志
# 使用字典找出其中出現次數最多的字符串,打印該字符串及其出現次數。
a=input()
b=[]
b.append(a)
while(a !="q"):
    a=input()
    b.append(a)
b.pop()
#print(b)
c={}
for i in b:
    if i in c:
        c[i]=c[i]+1
    else:
        c[i]=1

#print(c)
d=list(c.items())
d.sort(key=lambda x:x[1],reverse=True)
m,n=d[0]
print("{} {}".format(m,n))
# 輸出字典c的各個項
# for n,m in c.items():
#     print(n,m)

 

7-25 輸入三角形三邊長,求三角形面積(高教社,《Python編程基礎及應用》習題3-8) (5 分)

 

編程序實現功能:輸入三角形的三條邊邊長,求三角形面積,其中面積計算使用用戶自定義函數實現。 輸出的面積保留兩位小數。

 

 

def square(a,b,c):
    p=(a+b+c)/2
    area=sqrt(p*(p-a)*(p-b)*(p-c))
    return area
from math import * 
x,y,z=eval(input()),eval(input()),eval(input())
if x+y>z and x+z>y and z+y>x:
    print("{:.2f}".format(square(x,y,z)))
else:
    print("數據錯誤")

  

7-26 最短跑道長度(高教社,《Python編程基礎及應用》習題3-12 (5 分)

 

假設某飛機的加速度是a,起飛的速度是v,下述公式可以計算出該飛機起飛所需的最短跑道長度: L = v2/(2a)。編寫一個程序,提示用戶輸入起飛速度v(m/s)和加速度a(m/s2),計算飛機起飛的最短跑道長度,輸出時保留2位小數。計算過程宜封裝成一個函數,該函數接受參數v和a,返回計算所得的L。

  

def paodao(v,a):
    l=(v*v)/(2*a)
    return l
v,a=eval(input()),eval(input())
print("最短跑道長度為:{:.2f}".format(paodao(v,a)))

 

7-27 真素數 (5 分)

 

(1)定義判斷x是否為素數的函數prime(x) (2)輸入兩個大於1的整數A和B,且A<B,輸出[A,B]范圍內所有真素數的列表。 真素數的定義為:自身為素數,且自身各位數之和仍為素數。例如,11為素數,1+1=2也為素數,所以11為真素數。

def prime(x):
    for i in range(2,x):
        if x%i==0:
            return False
            break
    else:
        return True
a,b=eval(input()),eval(input())
list=[]
for q in range(a,b+1):
    sum=0
    c=str(q)
    for j in range(len(c)):
        sum=sum+eval(c[j])
    if prime(q) and prime(sum):
        list.append(q)
print(list)

  

 


免責聲明!

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



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