-9

値のエラーが発生し、コードをいじってみてもうまくいきません!

どうすれば正しくなりますか?- Python 3.3.2 を使用しています。

コードは次のとおりです。コード

ご覧のとおり、プログラムは何マイル歩くことができるかを尋ね、入力内容に応じて応答を返します。

これはテキスト形式のコードです:

print("Welcome to Healthometer, powered by Python...")
miles = input("How many miles can you walk?: ")
if float(miles) <= 0:
    print("Who do you think you are?!! Go and walk 1000 miles now!")
elif float(miles) >= 10:
    print("You are very healthy! Keep it up!")
elif float(miles) > 0 and miles < 10:
    print("Good. Try doing 10 miles")
else:
    print("Please type in a number!")
    miles = float(input("How many miles can you walk?: "))
    if miles <= 0:
        print("Who do you think you are?!! Go and walk 1000 miles now!")
    elif miles >= 10:
        print("You are very healthy! Keep it up!")
    elif miles > 0 and miles < 10:
        print("Good. Try doing 10 miles")
4

4 に答える 4

9

ユーザーが適切な値を入力しない可能性があることを考慮する必要があります。

try:
    miles = float(input("How many miles can you walk? "))
except ValueError:
    print("That is not a valid number of miles")

Aは、入力を float に変換しようとしたときに発生する可能性のある をtry/except処理します。ValueErrorfloat

于 2013-11-01T22:47:31.180 に答える
3

問題は、まさにトレースバック ログの内容です。Could not convert string to float

  • 数字だけの文字列がある場合、Python はあなたがしようとしていることを実行するのに十分賢く、文字列を float に変換します。
  • 数値以外の文字を含む文字列がある場合、変換は失敗し、発生していたエラーが発生します。

ほとんどの人がこの問題に取り組む方法は、try/except(こちらを参照) またはisdigit()関数 (こちらを参照) を使用することです。

試す/除外する

try:
    miles = float(input("How many miles can you walk?: "))
except:
    print("Please type in a number!")

Isdigit()

miles = input("How many miles can you walk?: ")
if not miles.isdigit():
    print("Please type a number!")

文字列に小数点がある場合、後者は依然としてfalseを返すことに注意してください

編集

さて、しばらくお返事できませんので、念のため回答を掲載させていただきます。

while True:
    try:
        miles = float(input("How many miles can you walk?: "))
        break
    except:
        print("Please type in a number!")

#All of the ifs and stuff

コードはとてもシンプルです:

  • 入力を float に変換しようとし続け、失敗した場合は最初に戻ります。
  • 最終的に成功すると、ループから抜け出し、下に置いたコードに移動します。
于 2013-11-01T23:11:17.693 に答える
1

トレースバックは、缶に記載されている内容を意味します。

>>> float('22')
22.0
>>> float('a lot')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: could not convert string to float: 'a lot'

float有効な小数のように見える文字列をfloats に変換できます。特に を含む任意の英数字文字列を変換することはできません'How am I supposed to know?'

任意のユーザー入力を処理したい場合は、この例外をtry/exceptブロックでキャッチする必要があります。

于 2013-11-01T22:47:46.013 に答える