如何使用用户输入结束程序?

时间:2013-04-25 13:21:05

标签: python if-statement python-3.x

我是python的新手,我正在编写一个将Millimeters转换为Inches的程序。基本上它是一个连续循环,允许您继续输入数字并获得正确的转换测量。我想放一个IF语句,允许用户键入“end”来结束程序,而不是转换更多的测量单位。我将如何使这项工作(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)

6 个答案:

答案 0 :(得分: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并将其返回值存储在i中,直到i == 'end'

请注意,如果用户输入非数字值,您可能需要进行一些错误检查,如上例所示。

答案 1 :(得分: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

您可以做出的另一项改进:如果您希望用户能够键入“END”或“End”或“end”,您可以使用lower()方法将输入转换为小写,然后再进行比较:

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

进行所有这些更改,您的程序将以您希望的方式运行。

答案 2 :(得分:2)

您可以使用break来摆脱循环。

MM=input()
if MM == "end":
    break

答案 3 :(得分:2)

要结束循环,您可以使用break statement。如果发出不可转换价值,您还可以利用ValueErrorraised这一事实:

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 (Keyboard interrupt)被按下并优雅地处理它:

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

这将是这样的(^C表示发送Ctrl+C):

[vyktor@grepfruit tmp]$ ./convert 
Convert MM to Inches
*******MM*******
^CBye bye

答案 4 :(得分:1)

用户输入后对MM进行测试可能会有效。您使用关键字break来摆脱循环。你的例子,在少量添加之后如下。

print ("Convert MM to Inches")
convert=float(25.4)
while True:
    print("*******MM*******")
    MM=input()
    if MM == 'end':
        break
    Results=float(MM)/convert
    print("*****Inches*****")
    print("%.3f" % Results)
    print("%.4f" % Results)
    print("%.5f" % Results)

答案 5 :(得分: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)