2017-09-17 3 views
-1

これは私が取り組んでいる電卓のセクションです。このセクションは、操作の整数値(2行目)を比較するためのものです。次の行は、ユーザーが無効な値(1-4の数字ではない)を入力した場合、それが文を印刷してプログラムを終了した場合にキャッチすることを意味します。しかし、現在入力されている文章が1-4であるかどうかにかかわらず、文章を印刷してプログラムを終了しています。私のPythonコードは単純なif then文に従っておらず、私が間違っていることがわからない

def main(): 
operation = int(input("Hello, What would you like to do? (1)ADD, 2)SUBTRACT, 3)MULTIPLY, or 4)DIVIDE)")) 
if(operation != 1,2,3 or 4): 
    print("I'm sorry, but your an idiot >.>") 
    import sys 
    sys.exit() 
else: 
    pass 

P.S. 4行目の文法上の誤りはあなたの目的に合っています。

+2

を持っています'(operation!= 1,2,3 or 4)'の値を表示しようとしましたか? – Ssswift

+0

これは 'if((operation!= 1)、2,3):'と 'always(a(as operation!= 1)、2、(3 or 4)空でないタプル)truth-yを評価する。それはおそらくあなたが意図したものではないでしょう。 – jonrsharpe

+0

それは間違いなく私が意図したものなので、!=操作の場合、そのタイプのエラーを避けるためにある値を別の値と比較するときにのみ使用します。 – Marmoolak

答えて

1

"または"がなくてもうまく機能しなくても、それはちょっとしたことです。 「4」が存在するため それは常にtrueを返します:「(4)があれば、」よりよいこの周りにあなたの頭をラップするには、次の

if (x == 1) or (2): 
    print "x equals 1 or 2 exists" 

を使用してようなものだ は、実行してみてください。 Falseを返す唯一の時間は、「4」が「0」、「None」または「False」だった場合です。

「または」を削除しても、表示されたとおりに動作しません。 Pythonはタプルとして

(1,2,3,4) 

を "1,2,3,4" をとるのでだから、 "(1,2,3,4)" を直接 "操作" イコールかどうかチェックです。

「操作」は内部の与えられたタプルであれば、今、それはチェックだ代わりに

if operation not in (1,2,3,4): 
    print "It's spelled you're" 
else: 
    pass 

これを試してみてください。

+1

括弧は必要ありません。 –

+1

'(1、2、3、4)ではない操作ならどうすればそれを書くのですか?タプルは拘禁されています。リストはありません。 – trentcl

+0

操作が(...、)でない場合:#no括弧pls –

0

あなたが有効な値に比較操作をしようとしている方法が間違っているので、それに応じて扱う場合はそうのように、私は、演算値がリスト内に存在するかどうかを確認しようとして推薦する:

def main(): 
    operation = int(input("Hello, What would you like to do? (1)ADD, 2)SUBTRACT, 3)MULTIPLY, or 4)DIVIDE)")) 
    if operation not in [1,2,3,4]: 
     print("I'm sorry, but your an idiot >.>") 
     import sys 
     sys.exit() 
    else: 
     pass 
+0

ああ私のおしゃべり!すべてが今の魅力のように機能します!君たちありがとう。 – Marmoolak

関連する問題