2013-10-13 64 views
3

我想用Python 3的input()函數詢問用戶是或否的問題。例如:確定字符串是否爲「肯定」?

affirmative = ["", "y", "yes"] 
x = input("Continue? [Y/n] ").lower() 
if x in affirmative: 
    # Do something 
else: 
    print("Canceled") 

是否有一個我應該用於「肯定」答案的列表?我知道Python對於預先確定的變量列表有如string.uppercasestring.lowercase。是否有答案列表應被視爲「是」答案?

+0

好,一,我不會說一個空字符串是肯定的...... – roippi

+0

既然你要求用戶輸入'Y'(默認)或'n',我認爲檢查第一個字母就足夠了。 –

+0

@roippi它就像'apt-get',它假定你想做你要求的東西,但是首先確認它 –

回答

5

Python的distutils有strtobool這可能適合你。 Documentation Link

distutils.util.strtobool(VAL)

轉換真理的字符串表示爲真(1)或假(0)。

  • 真值是:Ÿ牛逼真正,。
  • 假值是:Ñ沒有˚F關閉,。
  • 否則引發ValueError。

但這並不完全符合您目前所希望的風格。

+0

雅,但是......當提示**說**「是/否」時,進入(例如)「真」的用戶只是感到困惑:-( –

+0

@TimPeters:我同意。我認爲正確的解決方案是自制一套可接受的答案。 –

0

考慮到任何答案(也可能是多個)肯定或否定都取決於你。您可以創建一組潛在的用戶答案(如您已經顯示的那樣),或者您可以簡單地告訴用戶輸入錯誤,並提示「請回答是或否」。

也大多數使用肯定的消息將是yes, y, true, t, 1

1

我有一個更好的主意:接受以「yYnN」開頭的任何內容,如果必須的話,接受任何空字符串。抱怨其他事情並再次提問。用戶會很快習慣。

「應該有一個和最好只有一個-obvious辦法做到這一點」 :-)

+1

這很吸引人,有人應該寫下來。 – roippi

相關問題