5

私はPythonが初めてで、ミリメートルをインチに変換するプログラムを書いています。基本的に、数値を入力し続けて正しい変換された測定値を取得できる連続ループです。ユーザーが測定単位を変換する代わりに、「end」と入力してプログラムを終了できるようにする IF ステートメントを配置したいと考えています。これを機能させるにはどうすればよいですか (どの python コードを使用すると、記述されたプログラムを終了でき、IF ステートメントで使用できますか?)

convert=float(25.4)
while True:
    print("*******MM*******")
    MM=float(input())
    Results=float(MM/convert)
    print("*****Inches*****")
    print("%.3f" % Results)
    print("%.4f" % Results)
    print("%.5f" % Results)
4

6 に答える 6

4

iterセンチネルで使用するだけです:

print ("Convert MM to Inches")
convert=float(25.4)
for i in iter(input, 'end'):
    print("*******MM*******")
    try:
        MM=float(i)
    except ValueError:
        print("can't convert {}".format(i)) 
    else:
        Results=float(MM/convert)
        print("*****Inches*****")
        print("%.3f" % Results)
        print("%.4f" % Results)
        print("%.5f" % Results)

このようにして、iter呼び出しinputて戻り値をiuntilに格納しますi == 'end'

上記の例のように、ユーザーが数値以外の値を入力した場合に備えて、エラー チェックが必要になる可能性があることに注意してください。

于 2013-04-25T13:29:09.800 に答える
4

breakループを終了するには、ステートメントを使用できます。これは、条件ではなくループのみを調べるifため、ステートメント内で使用できます。breakそう:

if user_input == "end":
    break

user_inputではなくをどのように使用したかに注目してくださいMM。これは、コードに小さな問題があるためです。ユーザーが入力した内容を確認する前に float() を呼び出しています。つまり、「end」と入力すると、float("end") が呼び出され、例外が発生します。コードを次のように変更します。

user_input = input()
if user_input == "end":
    break
MM = float(user_input)
# Do your calculations and print your results

もう 1 つの改善点: ユーザーが「END」または「End」または「end」を入力できるようにする場合は、lower() メソッドを使用して、入力を比較する前に小文字に変換できます。

user_input = input()
if user_input.lower() == "end":
    break
MM = float(user_input)
# Do your calculations and print your results

これらすべての変更を行うと、プログラムは思い通りに動作します。

于 2013-04-25T13:30:04.957 に答える
2

breakループを終了するには、 statementを使用できます。非転換価値が発行された場合ValueError発生する事実を利用することもできます。

print ("Convert MM to Inches")
convert=float(25.4)
while True:
    print("*******MM*******")
    MM=input()
    try:
        MM = float(MM)
    except ValueError:
        break

    Results=float(MM/convert)
    print("*****Inches*****")
    print("%.3f" % Results)
    print("%.4f" % Results)
    print("%.5f" % Results)

結果:

[vyktor@grepfruit tmp]$ ./convert 
Convert MM to Inches
*******MM*******
exit
[vyktor@grepfruit tmp]$ 

または、文字列でのみ終了しexit、エラーが発生した場合に次のループに進みたい場合は、次の方法が適しています。

MM = input()
if MM == 'exit':
    break

try:
    MM = float(MM)
except ValueError:
    print( 'I\'m sorry {} isn\'t a valid value'.format(MM))
    continue # Next iteration

または、 (キーボード割り込み)が押されるまで待機して、適切に処理できる「linuxy」にすることもできます。Ctrl+C

try:
    # Whole program goes here
except KeyboardInterrupt:
    print('Bye bye')

これは次のようになります(^C送信を意味しますCtrl+C):

[vyktor@grepfruit tmp]$ ./convert 
Convert MM to Inches
*******MM*******
^CBye bye
于 2013-04-25T13:26:50.013 に答える
2

breakループから抜け出すために使用できます。

MM=input()
if MM == "end":
    break
于 2013-04-25T13:22:23.423 に答える
0
import os
print ("Convert MM to Inches")
convert=float(25.4)
while True:
    print("*******MM*******")
    MM=input()
    if MM.lower() in ('end', 'quit'):
        os._exit(1)
    MM = float(MM)
    Results=float(MM/convert)
    print("*****Inches*****")
    print("%.3f" % Results)
    print("%.4f" % Results)
    print("%.5f" % Results)

また

print ("Convert MM to Inches")
convert=float(25.4)
while True:
    print("*******MM*******")
    MM=input()
    if MM.lower() in ('end', 'quit'):
        break
    MM = float(MM)
    Results=float(MM/convert)
    print("*****Inches*****")
    print("%.3f" % Results)
    print("%.4f" % Results)
    print("%.5f" % Results)
于 2013-04-25T13:24:52.883 に答える