2013-01-23 133 views
-1

該代碼要求用戶選擇1或2.如果1,那麼blahblah;如果2則blahblah。如果兩者都不重複,則重複輸入1或2。項目不接受1或2,而不是直接去「其他」和重複輸入的問題,進入1個或2if statement not working,python

def optionType():   # pick option 

#pdb.set_trace() 

    option = '' 
    print ('Which slice option do you want, even slice (1) or leftover(2)? ') 
    input (option) 

    if option == '1': 
     evenSlice()  #includes decimal 

    elif option == '2': 
     leftoverSlice() #omits decimal 

    else: 
     print('Enter either 1 or 2.') 
     optionType() 

感謝您的幫助。

+2

步驟一:打印'option'。第二步:查看打印的內容(在這種情況下,選項未分配輸入,使用這種基本的調試方法變得相當明顯)。在SO上發佈應該是步驟42或者其他東西:p – keyser

+0

您是使用Python 2還是3? –

+0

@BurhanKhalid:我猜想基於'print('Enter ...'語句(儘管這不能保證任何東西) –

回答

4

你需要存儲input() function的返回值:

option = input('Which slice option do you want, even slice (1) or leftover(2)? ') 

的功能參數是要顯示的文字,不是你想接收用戶輸入的變量。

+0

那麼,這是第一步,但是'if'仍然不行,因爲他最終會將字符串與int –

+0

@BurhanKhalid - 不在python3.x(基於parens與打印是一種有效的可能性) – mgilson

+0

@BurhanKhalid:只在Python 2中。在Python 3中它是一個字符串.. –

0
  1. 你需要存儲的選項

    option = input('Which slice option do you want? even slice (1) or leftover(2)?')

而如果你是在Python2(但不是Python3):

  1. 當你這樣做,如果有人通過1,它將是一個int,而不是一個字符串。

    if option == 1:

  2. 所以input將導致一個錯誤,如果一個字母在[http://docs.python.org/2/library/functions.html#input]類型,你可能想raw_input

    option = raw_input('Which slice option do you want? even slice (1) or leftover(2)?')

+1

'raw_input'只是Python 2,OP似乎在使用Python 3,其中'input()'總是返回一個字符串, –

+0

我不知道那關於python3。謝謝!雖然不可能說出OP的用途。 –

+1

那麼,看看OP詢問的其他問題,Python版本在哪裏給出它是Python 3。 –