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

Python 如何使用用户输入结束程序?,python,if-statement,python-3.x,Python,If Statement,Python 3.x,我是python新手,正在编写一个将毫米转换为英寸的程序。基本上,它是一个连续的循环,允许您不断输入数字并获得正确的转换测量值。我想放一个IF语句,允许用户键入“end”来结束程序,而不是转换更多的度量单位。我将如何进行这项工作(什么样的python代码允许您退出一个已编写的程序,并且可以在IF语句中使用) 您可以使用break中断循环 MM=input() if MM == "end": break 或 在用户输入后测试MM。您可以使用关键字break来中断循环。您的示例,在次要添加

我是python新手,正在编写一个将毫米转换为英寸的程序。基本上,它是一个连续的循环,允许您不断输入数字并获得正确的转换测量值。我想放一个IF语句,允许用户键入“end”来结束程序,而不是转换更多的度量单位。我将如何进行这项工作(什么样的python代码允许您退出一个已编写的程序,并且可以在IF语句中使用)


您可以使用
break
中断循环

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


在用户输入后测试
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)
要结束循环,可以使用。您还可以利用这样一个事实,即如果发行了不可转换价值:

打印(“将毫米转换为英寸”)
转换=浮动(25.4)
尽管如此:
打印(“*********毫米**********”)
MM=输入()
尝试:
毫米=浮动(毫米)
除值错误外:
打破
结果=浮动(毫米/换算)
打印(“******英寸******”)
打印(“%.3f”%结果)
打印(“%.4f”%结果)
打印(“%.5f”%结果)
结果:

[vyktor@grepfruittmp]$/转换
将毫米转换为英寸
*******嗯*******
出口
[vyktor@grepfruittmp]$

或者,如果您只想在字符串
exit
上退出,并在出现错误时转到下一个循环,最好的方法是:

MM=input()
如果MM==“退出”:
打破
尝试:
毫米=浮动(毫米)
除值错误外:
打印('I'm sorry{}不是有效值。格式(MM))
继续#下一次迭代

或者,您可以将其设置为“linuxy”,您可以等到按下按钮,然后优雅地处理它:

试试看:
#整个程序都在这里
除键盘中断外:
打印(‘再见’)
如下所示(
^C
表示发送
Ctrl+C
):

[vyktor@grepfruittmp]$/转换
将毫米转换为英寸
*******嗯*******
^再见
只需与哨兵配合使用即可:

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)
这样,调用它的返回值并将其存储在
i
中,直到
i==“end”


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

要结束循环,可以使用
break
语句。这可以在
if
语句中使用,因为
break
只查看循环,而不查看条件。因此:

if user_input == "end":
    break
注意我是如何使用
user\u输入的,而不是
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


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

您可以使用
break
语句在
循环时停止
。是否尝试执行类似
的操作,如果。。。系统退出(1)
?您的代码已经运行。当我输入
end
时,程序结束。请注意,在终止之前,它会抛出一个
NameError
,但它确实结束:-)请不要将问题中的代码更改为答案。如果你这样做了,答案就没用了。是的,我试着做一些事情,比如如果MM==“end”,然后退出程序。是的,我的第一个例子就是这样做的?我只是做了一个额外的选项来写quit:)@user2316617同样,你做了
MM=float(input())
,这使得无法检查
MM==“string”
,因为
MM
不再是一个字符串,而是一个数字。如果我将代码更改为convert=float(25.4),而为True:print(“*************MM********”)MM=float(input())结果=浮动(毫米/转换)打印(“****英寸*******”)打印(%.3f”%Results)打印(%.4f”%Results)打印(%.5f”%Results)@deathApril我删除下一票没有问题;)但在他/她修复之前it@Vyktor我怎样才能使MM不是一个浮点数,但仍然能够被转换?你可以将它转换为任何类型,例如
int()
str()
。问题用py3x标记,py3x中没有
原始输入
。我想他是在Python3中这样做的。他们不是在Python3中将
raw\u input()
重命名为
input()
吗?我个人认为这样做有点草率。例如,如果用户键入“End”或“End”或“End”怎么办?他使用的是Python 3input
与Python2中的
raw\u input
一样工作。谢谢:我错过了。修正了我的答案以反映这一点。你还应该建议从输入中删除空白,以防用户在“结束”之前或之后意外地点击空格键
if user_input == "end":
    break
user_input = input()
if user_input == "end":
    break
MM = float(user_input)
# Do your calculations and print your results
user_input = input()
if user_input.lower() == "end":
    break
MM = float(user_input)
# Do your calculations and print your results