0

エラーが発生しないコードを作成する必要があります。たとえば、印刷を再試行します。

私は他のトピックで学びますが、それについては何も理解していません。私はこのコードを持っています:

def conversor(anosluz):
    try:
        km = float(anosluz * (9.459 * 10**12)) 
        return km
    except Exception, e:
        print 'Ooops! O valor que inseriste nao e o correcto, tenta de novo.', e


if __name__=='__main__':
    anosluz = input('Insira a distancia em anos luz: ')
    resultado = conversor(anosluz)
    print resultado
4

2 に答える 2

2

コードを入力/出力と計算に分割します。

def conversor(anosluz):
    # just convert the given anosluz into km
    km = anosluz * (9.459 * 10**12) 
    return km


if __name__=='__main__':
    while True:
        # repeat until *break*
        anosluz = raw_input('Insira a distancia em anos luz: ')
        try:
            resultado = conversor(float(anosluz))
        except ValueError, e:
            # oh, conversor raised an exception
            print 'Ooops! O valor que inseriste nao e o correcto, tenta de novo.', e
        else:
            # no exception, print result and exit
            print resultado
            break
于 2013-01-22T13:05:08.277 に答える
1

まず、python2では使用しないでください。input整数を取得したい場合は を使用しint(raw_input())、それ以外の場合は を使用しますfloat(raw_input())コードを実行する数値に文字列変換inputしないため、それを使用するプログラムのセキュリティに大きな穴を開けています。

Python の組み込みデータ型を入力として取得するために使用できる別の関数はast.literal_eval.

次に、いくつかのループを使用できます。

result = None
while True:
    num = raw_input("Insert number: ")
    try:
        result = float(num) * (9.459 * 10**12)
    except Exception:
        print "Try again!"
    else:
        break
print "The result is: ", result

基本的にtryexceptステートメントは例外をブロックし、それを処理させます。あなたの場合、入力リクエストを繰り返したいので、入力リクエストをエラーを処理するループに入れ、converser関数に例外を発生させる必要があります。

于 2013-01-22T13:04:48.613 に答える