前言:這次的作業有六道,難度均有所上升。敲代碼過程中遇到很多錯誤,准備總結出來作為一份錯誤經驗帖單獨列出來,敬請期待!
為了記錄我的Python課,將我的作業發上來,歡迎各位大佬評鑒。如果你有什么更好的想法,請在下方評論或聯系我。謝謝!
作業一:奇偶不同,結果不同(升級版)
描述
使用兩個 input() 接收用戶的兩個輸入,第一個為一個整數,第二個為一個任意字符串。根據第一個整數為奇數還是偶數執行不同的操作。
具體要求如下:
1、如果第一個整數為奇數(假設為3),第二個字符串假設為"abc",則輸出3遍"abc"中間用英文逗號","分割;即第一個整數為奇數n,則輸出n遍第二個字符串,字符串中間用英文逗號分割;
2、如果第一個整數為偶數(假設為4),第二個字符串假設為"abc",則輸出4遍"abc"的逆序字符"cba"中間用英文逗號","分割;即第一個整數為偶數n,則輸出n遍第二個字符串的逆序串,逆序串中間用英文逗號分割。
特別說明:輸入使用 input(),不要增加額外的提示信息,輸出結果中不要有任何空格類空白符號。
輸入格式
兩個輸入第一個為正整數,第二個為一串字符,輸入使用 input(),不要增加額外的提示信息。
輸出格式
按要求輸出一行結果,除此外不要輸出任何內容。
輸入輸出示例
輸入 | 輸出 | |
示例1 | |
|
示例2 | |
|
代碼:

a=int(input()) b=input() if a%2==1: for i in range(a): if i==a-1: print("{}".format(b),end='') break; print("{}".format(b),end=',') else : for i in range(a): if i==a-1: print("{}".format(b[::-1]),end='') break; print("{}".format(b[::-1]),end=',')
經驗:
這道題參考了一位同學的答案,我的代碼使用split函數時總出錯,所以放棄使用那個函數了。
作業二:英寸和厘米的交互(升級版)
描述
雖然我國已經很好的普及了國際單位制,而在現實生活中,仍然有很多地方采用了英制單位來描述,例如,我們買一台65寸的電視,這個地方的寸指的就是英寸,或者拍一張2寸的照片,用的是相同的英制單位。
現在已知 1英寸 = 2.54厘米。
請編寫程序實現以英寸標識的數據和以厘米標識的數據的互相轉換。
輸入格式
用戶輸入英制單位數據時,可以輸入的形式為以“i”或“inch”結尾的數字,例如:65i、23inch 。
用戶輸入國際單位制數據時,可以輸入的形式為以“c”或“cm”結尾的數字,例如:18c、88cm 。
特別注意: 輸入使用input(),不要增加額外的提示信息
輸出格式
結果為厘米為單位的數據時,輸出格式為數字后跟cm的形式,例如,120cm 。
結果為英寸為單位的數據時,輸出格式為數字后跟inch的形式,例如,120inch 。
用戶輸入的內容結尾不為“inch”、“i”、“cm”、“c”中的任何一個數據時,輸出結果為:輸入錯誤。
輸入輸出示例
請嚴格按照輸入輸出示例樣式完成程序。
輸入 | 輸出 | |
示例 1 | |
|
示例 2 | |
|
示例 3 | |
|
示例 4 | |
|
示例 5 | |
|
代碼:

a=input() b=a[-1] if b in["m","c"]: if b=="c": y=eval(a[:-1])/2.54 print("{:.2f}inch".format(y)) elif b=="m": y=eval(a[:-2])/2.54 print("{:.2f}inch".format(y)) elif b in["h","i"]: if b=="i": y=eval(a[:-1])*2.54 print("{:.2f}cm".format(y)) elif b=="h": y=eval(a[:-4])*2.54 print("{:.2f}cm".format(y)) else: print("輸入錯誤。")
經驗:
(原版在我的上一篇博客 Python課 #03號作業中)作為英寸和厘米的交互升級版,主要區別是最后一位字符多了"m"(cm)和"h"(inch)的選項;以及在進行計算時,需要考慮把”inch“、"cm"、"i"、"c"等不同長度的字符串去掉的情況。不過我在想有沒有一個這樣的函數,可以直接去掉首位或者末尾字符串然后計算呢?
老師提供了一種解題思路:

s=input('input a number start or end with u/U/r/R:') if s[0] in 'uU' or s[-1] in 'uU': money=eval(s.strip('uU')) print('輸入的是美金{}元。'.format(money)) print(type(money)) elif s[0] in 'rR' or s[-1] in 'rR': money=eval(s.strip('rR')) print('輸入的是人民幣{}元。'.format(money)) print(type(money)) else: print('輸入錯誤')
作業三:人民幣和美元轉換
描述
用戶輸入人民幣或美金數額,轉換為對應的美金或人民幣數額。
用戶輸入的數字前后帶有字符"r"或"R"表示為人民幣,前后帶有字符"u"或"U"表示美金。
編寫程序實現此功能(匯率按 1美元=6.51人民幣),輸入使用input(),不要增加額外的提示信息。
輸出結果為轉換后的數值,保留兩位小數。
提示:
輸出格式可以采用print函數中留槽的方式使用 "{:.2f}"實現。
輸入 | 輸出 | |
示例1 | |
|
示例2 | |
|
示例3 | |
|
示例4 | |
|
示例5 | |
|
示例6 | |
|
示例7 | |
|
示例8 | |
|
代碼:

a=input() b=a[-1] c=a[0] if c in["u","U"]: y=eval(a[1:])*6.51 print("{:.2f}".format(y)) elif c in["R","r"]: y=eval(a[1:])/6.51 print("{:.2f}".format(y)) elif b in["u","U"]: y=eval(a[:-1])*6.51 print("{:.2f}".format(y)) elif b in["R","r"]: y=eval(a[:-1])/6.51 print("{:.2f}".format(y))
經驗:
這道題一開始想用while循環語句,后來發現不用也可以達到目的。a[1:]的意思是除第一位以外的字符串。
作業四:輸出3個數中的最大值
描述
使用3個input()函數,接收3個整數,將其最大值輸出。
輸入格式
輸入使用input(),不要增加額外的提示信息。
輸出格式
輸出內容為3個整數中的最大值,具體參閱輸入輸出示例。
輸入輸出示例
輸入 | 輸出 | |
示例 1 | |
|
示例 2 | |
|
代碼:

a=eval(input()) b=eval(input()) c=eval(input()) if a>b: if a>c: print(a) else: print(c) else: if b<c: print(c) else: print(b)
升級:后來老師說有max函數,所以可以寫為:
print("{}".format(max(eval(input()),eval(input()),eval(input())))
作業五:輸入3個數字,由小到大輸出
描述
用戶依次輸入3個數字(每個輸入占一行),如下面輸入所示,程序將這三個數字由小到大依次輸出,如下面輸出示例:
注意:輸入使用 input() 形式,不要增加任何其他附加信息。
輸入輸出示例
輸入 | 輸出 | |
示例 1 | |
|
示例 2 | |
|
代碼:

a=eval(input()) b=eval(input()) c=eval(input()) if a>b: if a>c: if b>c: print("{}\n{}\n{}\n".format(c,b,a)) else: print("{}\n{}\n{}\n".format(b,c,a)) else: print("{}\n{}\n{}\n".format(b,a,c)) else: if b>c: if a<c: print("{}\n{}\n{}\n".format(a,c,b)) else: print("{}\n{}\n{}\n".format(c,a,b)) else: print("{}\n{}\n{}\n".format(a,b,c))
經驗:
也許這道題還有更簡單的代碼,我的代碼還是太過繁瑣,中間還丟過兩種情況,幸好后來發現了。
升級:
嗯,確實有更簡單的:

a=eval(input("")) b=eval(input("")) c=eval(input("")) if a>b: a,b=b,a if b>c: b,c=c,b if a>c: a,c=c,a print(a) print(b) print(c)
作業六:拍7游戲
描述
“拍7游戲”規則是:一堆人圍成一圈,開始時,任意指定一人說出數字“1”后,一圈人按順時針方向,每人按整數由小到大的順序一人一個地報出后續數字“2”、“3”......,當遇到為“7”的整數倍數字或含“7”的數字時,該念這個數字的人需要拍手一下並喊“跳過”(不能念出這個數字)。應該拍手並喊“跳過”的人,念出了數字,或者該念數字而拍手或喊“跳過”的人為輸,接受懲罰后,游戲重新開始。
書寫一個程序,接收用戶的一個整數輸入,輸出從1到這個整數(包含這個整數)間所有應該拍手喊“跳過”的數字。每個數字輸出占一行。
輸入使用 input() ,不要附加任何參數和提示信息。
輸入格式
輸入一個整數,使用 input() 函數實現。不要為 input() 函數增加任何參數和提示信息。
輸出格式
按行輸出結果。具體參閱下方輸入輸出示例。
輸入輸出示例
輸入 | 輸出 | |
示例 1 | |
|
示例 2 | |
|
代碼:
n=eval(input()) for i in range(1,n+1): y=str(i) if i%7==0: print(i) elif "7" in y: print(i)
升級版:
n=eval(input()) for i in range(1,n+1): y=str(i) if i%7==0 or"7" in y: print(i)
繼續升級:
for i in range(1,eval(input())+1): if i%7==0 or"7" in str(i): print(i)
經驗:審題是關鍵啊!條件有2個:一是7的公倍數,另一個是含7的字符串。