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