2017-08-18 3 views
0

私は、それが壊れている空白スペースであれば、それが覚えている番号であれば、ユーザー入力を受け取る 'while'ループを作成しようとしています。最後に、入力されたすべての数字の平均を出力する必要があります。これは私に '文字列を浮動小数点に変換できませんでした:'というエラーを出しています。ここで何が間違っていますか?ありがとう!ValueError:文字列を浮動小数点に変換できませんでした - ユーザー入力をPythonで

EDIT:このように書き直しましたが、変換に関して同じエラーが発生しますが、最終的な(カウント+ = 1)行にあるようですか?

number = 0.0 
count = 0 

while True: 
    user_number = input('Enter a number: ') 
    if user_number == ' ': 
     break 
     print (number/count) 
    number = number + float(user_number) 
    count += 1 
+0

空白スペースを入力しても、それでも - number = number + float(user_number) 'に浮動小数点数に変換しようとしています。 –

+0

最初にチェックしてから追加してください。 –

+0

ユーザーは ''''と数字以外の文字を入力していますか? – nikpod

答えて

2

番号部分に行きますもう数字を渡す。その場合、スペースとの比較は正しくありません。

number = 0.0 
count = 0 

while True: 
    user_number = input('Enter a number: ') 
    if user_number == '': 
     break 

    number += float(user_number) 
    count += 1 

print (number/count) 

また、break以降のステートメントには到達できません。


もっとクリーンな方法が必要な場合は、リストに追加して平均値を計算することをおすすめします。これにより、別個のカウンタが不要になります。

numbers = [] 
while True: 
    user_number = input('Enter a number: ') 
    if user_number == '': 
     break    

    numbers.append(float(user_number)) 

print (sum(numbers)/len(numbers)) 

また、あなたがwhileの頭の中でテストすることによって、breakの必要性を取り除くことができますが、あなたはループの外で追加の入力を取る必要があります:これを試してみてください。

+0

テストし、これが動作します。 –

+0

ああ、それです!それは空白ではなく、ただのものではありませんでした!どうもありがとうございます。 – G3ck0

+0

@ G3ck0確かに。 [承認済み](https://stackoverflow.com/help/someone-answers)に気軽にご連絡ください。 –

0

あなたは順序を変更する必要があります。今はすべてを浮動小数点に変換しようとします。

while True: 
    user_number = input('Enter a number: ') 
    if not user_number.isdigit(): 
     print (number/count) 
     break 
    count += 1 
    number = number + float(user_number) 

さらに、breakの前に平均値の印刷を行う必要があります。

数字以外の入力が入力された場合、if条件を壊すように変更しました。これは以前より少し一般的です。

+0

私はまだそのコードでも同じエラーが発生します。 – G3ck0

+0

@ G3ck0数字以外の何かが入力されたときに改行するように変更しました。これは、数字や空白以外の文字列が使用されるケースを説明します。 – Shaido

+0

これは週単位の演習のためのプログラムです。数字や空白以外の入力はありません。 – G3ck0

0

順番を変更すると、それは問題を解決する必要があり、あなたが最初のチェックは、入力文字列やないenternedされなければならない、その後私の推測では、あなたがしたくないときは、直接入力したヒットということです

#!/usr/bin/python 
number = 0.0 
count = 0 

while True: 
    user_number = raw_input('Enter a number: ') 
    if user_number == (' '):   
     print (number/count) 
    break 
    number = number + float(user_number) 
    count += 1 
+0

それでも、私は '文字列を浮動小数点に変換できませんでした:'エラーを返します。 – G3ck0

+0

私はコードを更新し、テストしました。今、その作業 – Shafiq

0

これはうまくいくはずです。

lst= [] 
while True: 
user_number = input('Enter a number: ') 
if user_number == ' ': 
    break 
lst.append(int(user_number)) 
print(int(user_number)) 
print("Average : " + str(sum(lst)/len(lst))) 
+0

と私は同様の答えを投稿すると思いますか? – Gahan

+0

重大な書式設定や字下げの問題を抱えているため、確かに機能しません。 –

+0

@cᴏʟᴅsᴘᴇᴇᴅ..あなたは正しいです、私のコードにはここに現れているようにインデントの問題があります。私はこのコミュニティに慣れていないので、コメントに自分の作業コードを入れる方法がはっきりしていないからです。私は謝罪しますが、私のコードは完璧に動作します。コードを投稿する前にテストしました。コードに適切なインデントを適用してください。 –

0

このコードは正しく動作します。 私はあなたが休憩の入力としてスペース以外を与えていると思います。

number = 0.0 
count = 0 

while True: 
    user_number = input('Enter a number: ') 
    if user_number == ' ': 
     break 
     print (number/count) 
    number = number + float(user_number) 
    count += 1 

か、他のコードの下に使用します。 - >ブレークは数字以外の入力のためにトリガされます。

number = 0.0 
count = 0 
while True: 
    user_number = input('Enter a number: ') 
    if not user_number.isdigit(): 
     break 
    number = number + float(user_number) 
    count += 1 
print("user_number", number) 
print("Count", count) 
print (number/count) 
関連する問題