簡體   English   中英

當輸入字母代替數字時,如何防止程序崩潰?

[英]How do I stop the program from crashing when given a letter in the place of a number?

employee = float(raw_input('Employee code number or 0 for guest:') or 0.0)

if employee == isalpha:
    print "Nice try buddy"
    print "Welcome BIG_OLD_BUDDY" 

該代碼無法識別字母輸入。

有兩種方法。

  1. 您可以捕獲異常並通過。
try:
    employee = float(raw_input('Employee code number or 0 for guest: ') or 0.0)
except KnownException:
    #  You can handle Known exception here.
    pass
except Exception, e:
    # notify user
    print str(e)
  1. 檢查輸入的類型,然后執行您想做的事情。
employee = raw_input('Employee code number or 0 for guest:')

if(employee.isalpha()):
    print "Nice try buddy"
    print "Welcome BIG_OLD_BUDDY"
else:
    print "Your employee no is:" + str(employee)

除非有可能出現未知異常,否則不要使用try and catch。 建議使用if和else處理。

閱讀有關以下內容的更多信息:為什么不將異常用作常規控制流

試試看

try:
    employee = float(raw_input('Employee code number or 0 for guest: ') or 0.0)
except ValueError:
    print "Nice try buddy"
    print "Welcome BIG_OLD_BUDDY"

您可以使用try/except作為其他建議的答案,如果要使用str.isalpha() ,則必須在字符串上調用它,而不是將其與字符串進行比較。 例如:

employee = raw_input('Employee code number or 0 for guest:')

if employee.isalpha():
    print "Nice try buddy"
    print "Welcome BIG_OLD_BUDDY" 
else:
    employee = float(employee)

如果您希望它只接受正整數 ,則可以使用isdigit()進行檢查,而isdigit()基本上與isalpha()相反。

    employee = raw_input('Employee code number or 0 for guest:')

    if employee.isdigit()==False:
      print "Nice try buddy"
      print "Welcome BIG_OLD_BUDDY"
    elif int(employee)==0:
      print "You are a guest"
    else:
      print "Your employee no is:" ,employee

我還使用elif添加了一些代碼來檢查您是否是訪客

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM