2016-08-30 6 views
-1
numbers=[] 
while True: 
    print('Input Number '+str(len(numbers)+1)+' (or nothing to close):') 
    number=input() 
    numbers=numbers+[number] 
    if number=='': 
     print('What do you want to do?') 
     answer=input() 
     break 
     if answer==mean: 
      mean 
def mean(): 
    end_mean=reduce(lambda x, y: x + y, numbers)/len(numbers) 
    print(end_mean) 

私は、数字のリストを入力し、あなたがそれらで何をするかを選択することができますpythonで計算機タイプのプログラムを作ろうとしています。上記のスクリプトは始まりに過ぎませんが、何をすべきかを私に尋ねるときに数字とタイプを入力すると、スクリプトが終了して何も表示されません。私はPythonの初心者ですので、そのような答えとして許してください。pythonで計算機タイプのプログラムでエラーが発生しました

編集3 - 私はこれで終わるためにスクリプトを修正した以下の回答を使用した後

:「あなたが実行した後

Traceback (most recent call last): 
    File "E:/Python/calculator.py", line 26, in <module> 
    number= int(input()) 
ValueError: invalid literal for int() with base 10: '' 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "E:/Python/calculator.py", line 37, in <module> 
    elif reply--'yes': 
TypeError: bad operand type for unary -: 'str' 

:私はこれを取得しかし

import functools 
numbers=[] 

def means(): 
    end_mean = functools.reduce(lambda x, y: x + y, numbers)/len(numbers) 
    print(end_mean) 

def sum(): 
    end_sum = functools.reduce(lambda x, y: x + y, numbers) 
    print(end_sum) 

def whatDo(): 
     print('Input Extra Numbers '+str(len(numbers)+1)+' (or nothing to close):') 
     try: 
      number= int(input()) 
      numbers.append(number) 
     except: 
      print('What do you want to do?') 
      answer = input() 
      if answer == "mean": 
       means() 

while True: 
    print('Input Number '+str(len(numbers)+1)+' (or nothing to close):') 
    try: 
     number= int(input()) 
     numbers.append(number) 
    except: 
     print('What do you want to do?') 
     answer = input() 
     if answer == "mean": 
      means() 
      print('Do you want anything else?') 
      reply=input() 
      if reply=='no': 
       break 
      elif reply--'yes': 
       whatDo() 
     else: 
      break 

を他のものがほしいと思って、私は「はい」と答えます。

+3

あなた 'break'は前にある' 'チェックif'かの回答== '平均':'(私は引用符を追加しました)と 'mean'は'平均() '関数 – depperm

+0

を呼び出すためにどのようなPythonのバージョンでなければなりませんあなたは使用していますか? python2またはpython3? –

+0

python 3 @AhsanulHaque –

答えて

1

が、これはあなたを助けるかもしれませ。

numbers=[] 

def means(): 
    end_mean = reduce(lambda x, y: x + y, numbers)/len(numbers) 
    print(end_mean) 

while True: 
    print('Input Number '+str(len(numbers)+1)+' (or nothing to close):') 
    try: 
     number= int(input()) 
     numbers.append(number) 
    except: 
     print('What do you want to do?') 
     answer = input() 
     if answer == "mean": 
      means() 
     else: 
      break 

私はあなたのコードから変更しましたか?

  • try-exceptブロックが追加されました。これは、入力として''を渡したときのケースを処理できるように追加されています。
  • 数値を渡す前にintにキャスト入力してください。intの値はstringではありません。
  • 入力からリストを作成して、前のリストに追加しますが、これは不要で非効率です。私はnumbers.append(number)と置き換えます。
  • 不要なbreakステートメントが削除されました。 breakは、ループから抜け出すために使用されます。 breakを使用すると、実行された後のステートメントは表示されません。
1

まず、を払い、にチェックを入れてください。あなたのチェック自体も失敗します。

if answer==mean: 
    mean 

あなたは(関数オブジェクト)を意味する答え(文字列)を比較しました。試してみてください:

if answer == "mean": 
    mean() 

また、私はあなたがint型文字列からの入力番号を変換することを期待:

if number=='': 
    .... 
else: 
    numbers=numbers+[int(number)] 
+0

OPは無条件で前に戻るため、この部分は決して実行されません。 –

+0

右私は誤って元の投稿からそれを削除しました。今修正されました。 – Prune

関連する問題