2017-02-01 10 views
0

私のpythonに新しいですし、シナリオの周りに来たがbelow-を説明した:Python2.7-:ユーザー入力を格納することは、リスト内の入力値

これは私が学ぶことを言及しています.PDFから1です。誰かが他のリソースを案内したり共有したりすることができれば素晴らしいだろう。

ユーザーが「完了」を入力するまで繰り返し数値を読み取るプログラム。 「完了」を入力すると、数値の合計、数、平均が印刷されます。ユーザーが数字以外を入力した場合は、tryとexceptを使用して間違いを検出し、エラーメッセージを出力して次の番号にスキップします。

Enter a number: 4 
Enter a number: 5 
Enter a number: bad data 
Invalid input 
Enter a number: 7 
Enter a number: done 

16 3 5.333333333333333* 

値をリストに保存できません。

はこのいるロジックと一緒に行くしようとしました:

while True: 
    line = input('Enter Number-: ') 
    if type(line) == int(): 
     continue 
    if line == 'done': 
     break 
    print(line) 
print('Done!') 

だけ ユーザーは、上記の例のように値を入力することができるはず、スペースまたはカンマを使用せずにリストに保存する方法を知っておく必要があり、それらをリストに格納する必要があります。

ありがとうございます。

+0

これまで行ってきたことを示してください – Foon

+0

それはシナリオではなく課題ですか? –

+0

@Foon - 私はここで使用されているロジックに従っていました。http://www.py4e.com/code3/copytildone2.py –

答えて

1

Python 2.7では、入力はevalulateとなり、入力が正しいPythonタイプでない場合は失敗します。ここではraw_inputを使用する方がよいでしょう。 Python 3に移行した場合、raw_inputが削除され、inputがraw_inputの動作に影響します。したがって、あなたの例では、45またはdoneの代わりに'45'または'done'とすることを期待しています。

しかし、値をリストに保存できないのは、最初にリストに値を追加していないからです。しかし、raw_inputに切り替えたので、エントリが有効な番号かどうかはわかりません。だから私たちは数字に変換しようとする必要がありますし、それが1でない場合は、それが停止するコードを伝えるキーワードかどうかを確認してください。

values = [] # make an empty list 
while True: 
    line = raw_input('Enter Number-: ') # all entries here are considered strings 
    try: 
     num = int(line) # convert to an integer 
     values.append(num) # add to list 
     continue # return to input query 
    except: # int(line) threw an error, so not a valid number input 
     if line == 'done': # check if should stop 
      break # get out of loop 
     else: # anything else 
      print 'bad data, invalid input' 
      continue # return to input query 

print 'Done!\n'  
print 'total:', sum(values) 
print 'count:', len(values) 
print 'average:', sum(values)/float(len(values)) 

あなただけの整数以上のものを入力している場合は、intは整数のみを受け入れるよう、小数点以下の入力を処理するためにnum = float(line)num = int(line)を変更したいことがあります。

Enter Number-: 4 
Enter Number-: 5 
Enter Number-: 
bad data, invalid input 
Enter Number-: 7 
Enter Number-: done 
Done! 

total: 16 
count: 3 
average: 5.33333333333 

Tutorialは、Pythonの学習にも役立ちます。

関連する問題