2017-06-20 5 views
-5
print('Select operation') 
print('Choose from:') 
print('+') 
print('-') 
print('*') 
print('/') 

choice=input('Enter choice (+,-,*,/):') 

num1=int(input('Enter first number:')) 
num2=int(input('Enter second number:')) 

if choice== '+': 
print(num1,'+',num1,'=', (num1+num2)) 
while restart **=** input('Do you want to restart the calculator y/n'): 
    if restart == 'y':t 
     print('restart') 
     else restart == 'n': 
      print('Thanks for using my program') 
      break 

elif choice== '-': 
print(num1,'-',num2,'=', (num1-num2)) 

elif choice== '*': 
print(num1,'*',num2,'=', (num1*num2)) 

elif choice== '/': 
print(num1,'/',num2,'=',(num1/num2)) 

else: 
print('Invalid input') 

=は太字で示していますか?私は何が間違っているのか理解していないのですか?誰かが私の質問に答えてください。 太字で表示された=が無効な構文であると言っているのはなぜですか?

はCやJavaとは異なり、 シャーロット

+4

インデントを修正します。 – SLaks

+1

はい、無効な構文です。 '== input(...) '等価演算子を使用する –

+1

一部の言語では、条件文中に代入文を入れることができます。 Pythonはこれらの言語の1つではありません。 – Kevin

答えて

0

複数の問題:変数にinputから

  1. 割り当てはwhileループでチェックすることができない、あなたが割り当てに分割すべきであり、チェック。

  2. はあなたにも結果を印刷するにはバグがありました

  3. 条件を含めることはできませんelse - それは正しく次のインデント投稿していることを確認してください - あなたはくぼみがPythonで意味がある

  4. 二回num1を印刷しました時間

上記の問題のための修正:

def calc(): 
    print('Select operation') 
    print('Choose from:') 
    print('+') 
    print('-') 
    print('*') 
    print('/') 

    choice=input('Enter choice (+,-,*,/):') 

    num1=int(input('Enter first number:')) 
    num2=int(input('Enter second number:')) 
    if choice == '+': 
     print("{}+{}={}".format(num1, num2, num1+num2)) 

    elif choice == '-': 
     print("{}-{}={}".format(num1, num2, num1-num2)) 

    elif choice == '*': 
     print("{}*{}={}".format(num1, num2, num1*num2)) 

    elif choice == '/': 
     print("{}/{}={}".format(num1, num2, num1/num2)) 
    else: 
     print('Invalid input') 


if __name__ == '__main__': 
    restart = 'y' 
    while restart: 
     if restart == 'y': 
      print('restart') 
      calc() 
      restart = input('Do you want to restart the calculator y/n')  
     elif restart == 'n': 
      print('Thanks for using my program') 
      break 
+0

「計算機を再起動する」ループは無限大です。 –

+0

@ Jean-FrançoisFabre - fixed – alfasin

+0

@Charlotte注意 - 入力を取得して計算を関数に行い、mainからその関数を呼び出すというビジネスロジックを抽出して、コードを少しリファクタリングしました。それをリファクタリングして、専用の関数で入力を読み取って(検証して)、別の関数で計算を行うことができます。 – alfasin

0

をありがとう、Pythonはループや条件文の中の割り当てをサポートしていません。

restartに値を割り当てると仮定すると、それを外側で実行してからテストする必要があります。

restart = input(...) 
while restart: 
    ... # do something here 

あなたがしたいすべてが比較である場合は、あなたが===を変更する必要があります:

while restart == ...: 
    ... # do something here 
+0

これは無限ループになりますが、 –

+0

@ Jean-FrançoisFabre実際、そうです。私は休憩を見たが、どのようにそれが呼び出されていたのか分からなかった。うん、確かに無限ループ。 –

0

あなたはブール値として代入文を使用しようとしました。これは2つのカウントで失敗します。何よりも、あなたのrestart論理を数行のコードに広げ、パーサを混乱させています。

あなたはおそらくこのような何かしたい:ここ

restart = input('Do you want to restart the calculator y/n') 
while restart.lower() == 'y': 
    ... 
    restart = input('Do you want to restart the calculator y/n') 
関連する問題