2017-05-26 12 views
-2

これは私のprogramのコードスニペットです。要求された値が入力されると、その変数の値が増加し、キーqを押してループを終了して結果を出力します。私のコードは、sysからargvをインポートして引数を取ることに注意してください(コマンドラインの私の名前です)。intをcharと比較する

私はコマンドでスクリプトを実行
prompt = "# " 
come_out = True 
one = 0 
two = 0 
three = 0 
four = 0 
answer = 0 

while (come_out == True): 
    print """ 
    Enter q to exit() 
    > Do you like Got? 
    > What about LoTR? 
    > Okay, Fargo? 
    > Alright, last choice: American Gods? 
    """ 
answer = raw_input(prompt) 
if answer == 1: 
    one = one + 1 
elif answer == 2: 
    two = two + 1 
elif answer == 3: 
    three = three + 1 
elif answer == 4: 
    four = four + 1 
elif answer == ord('q'): 
    come_out = False  
else: 
    print "Not applicable ~~~ exiting" 
    come_out = False 

$ python ex14.py Sambhav-Jain

それはまでループを介してすべての方法を実行するために持っていたとして、それは、すべてのエラーを与えるものではありませんが、想定して動作しません。ユーザーが明示的にキーqを押して終了しますが、:

Hi, Sambhav-Jain. Welcome to your ex14.py script. 

Enter q to exit() 
> Do you like Got? 
> What about LoTR? 
> Okay, Fargo? 
> Alright, last choice: American Gods? 

# 1 
Not applicable ~~~ exiting 

GoT Lovers: 0 
LoTR Lovers: 0 
Fargo Lovers: 0 
American God Lovers: 0 

は、私はオンラインで検索して、明示的に0123をキャストする方法を発見しました

answer = int(raw_input(prompt)) 

これをやって、私は、以前のバージョンのために使用したのと同じコマンドを実行することで、それがエラーを生成します:intすなわち、変数

Hi, Sambhav-Jain. Welcome to your ex14.py script. 

Enter q to exit() 
> Do you like Got? 
> What about LoTR? 
> Okay, Fargo? 
> Alright, last choice: American Gods? 

# 1 

Enter q to exit() 
> Do you like Got? 
> What about LoTR? 
> Okay, Fargo? 
> Alright, last choice: American Gods? 

# q 
Traceback (most recent call last): 
File "ex14.py", line 26, in <module> 
    answer = int(raw_input(prompt)) 
ValueError: invalid literal for int() with base 10: 'q' 

PS:重複としてこれをマークしないでください。

+0

すばやく変更できるのは、qではなく-1を求めることです。このように、すべての入力タイプは同じです。 – Antimony

+1

このガイドラインに従ってください:https://stackoverflow.com/help/mcve – klutt

答えて

1

raw_input()は文字列を返します。

だから、それを変換するか、文字列だけで比較する必要があります。あなたが期待通りに動作します

if answer == '1': 
    one = one + 1 
elif answer == '2': 
    two = two + 1 
elif answer == '3': 
    three = three + 1 
elif answer == '4': 
    four = four + 1 
elif answer == 'q': 
    come_out = False  

:あなたがあなたの比較を変更した場合