魯棒 = Robust 健壯
英文字符的魯棒輸入
描述
獲得用戶的任何可能輸入,將其中的英文字符進行打印輸出,程序不出現錯誤。
輸入輸出示例
輸入 | 輸出 | |
---|---|---|
示例 1 | *&^123abc0e |
abce |
解法一
alpha = []
for i in range(26):
alpha.append(chr(ord('a') + i)) #把a~z先放到列表中
alpha.append(chr(ord('A') + i)) #再把A~Z也放進去
s = input()
for c in s:
if c in alpha: #直接判斷
print(c, end="")
解法二
s = input()
for c in s:
c = str(c) #轉成字符串
if 'z'>=c>='a' or 'Z'>=c>="A": #逐個字符拿來比較 不另開列表
print(c, end="")
數字的魯棒輸入
描述
獲得用戶輸入的一個數字,可能是浮點數或復數,如果是整數僅接收十進制形式,且只能是數字。對輸入數字進行平方運算,輸出結果。
要求:
(1)無論用戶輸入何種內容,程序無錯誤;
(2)如果輸入有誤,請輸出"輸入有誤"。
輸入輸出示例
輸入 | 輸出 | |
---|---|---|
示例 1 | 1+2j |
(-3+4j) |
示例2 | abd |
輸入有誤 |
解法
s = input()
try: # 這里用到了 try except 異常處理
if complex(s) == complex(eval(s)):
print(eval(s)**2)
except:
print("輸入有誤")
其中complex()
和complex(eval())
之間的比較將能夠排除非數字類型的輸入。
注意:不能直接使用eval()
,否則,用戶可以通過輸入表達式(如100**2)輸入數字,與要求不同(在實際應用中帶來安全隱患)。