5

我是 python 新手,我正在编写一个将毫米转换为英寸的程序。基本上,它是一个连续循环,可让您不断输入数字并获得正确的转换测量值。我想放一个 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)
4

6 回答 6

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

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

于 2013-04-25T13:30:04.957 回答
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 回答
2

要结束循环,您可以使用breakstatement。如果发行不可兑换价值,您还可以利用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 回答
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)
于 2013-04-25T13:26:05.993 回答
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 回答