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