我是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)
答案 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。如果发出不可转换价值,您还可以利用ValueError
为raised这一事实:
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)