TQC+ 程式語言Python 808 社會安全碼
題目說明:
請撰寫一程式,提示使用者輸入一個社會安全碼SSN,格式為ddd-dd-dddd,d表示數字。若格式完全符合(正確的SSN)則顯示【Valid SSN】,否則顯示【Invalid SSN】。
範例輸入1
329-48-4977
範例輸出1
Valid SSN
範例輸入2
837-a3-3000
範例輸出2
Invalid SSN
程式碼:
Str = input()
List = Str.split('-')
for i in List:
if not i.isdigit():
print('Invalid SSN')
break
else:
print('Valid SSN')
2 則留言
Jason
不好意思,這樣好像是錯的,我有寫一個可以參考一下:
a=input()
b=[]
c=[0,1,2,4,5,7,8,9,10]
for i in range(10):
try:
if i == 3 or i == 6 and a[i]==’-‘:
b.append(True)
elif a[i].isdigit() and i in c:
b.append(True)
except:
pass
if b.count(True)==10:
print(‘Valid SSN’)
else:
print(‘Invalid SSN’)
JamesBang
同學你好,不錯的寫法,有點土法煉鋼,不過你這樣寫的話,會少判斷到最後一碼,你可以試著輸入「329-48-497a」,答案就會錯了!把範圍改成到 11 即可
我的寫法是先用 split(‘-‘) 方法,把輸入的字串拆成三個資料給變數 List,這樣我的 List 就有三筆資料,然後只要再判斷這三筆是不是都是數字,就可以算出答案了!
這題我去年在測驗平台(忘了是哪個平台) Run 的時候是顯示正確的,現在是不是會判斷成錯誤不清楚?
我剛剛從這裡把程式碼複製到 Spyder 時,這個符號 –> 「’」會出錯,要重打一次,改完後再執行就可以正常顯示了!
有任何問題歡迎再留言討論!謝謝