python-3.x 如何使用用户输入来结束程序?

ezykj2lf  于 2023-02-01  发布在  Python
关注(0)|答案(6)|浏览(151)

我是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)
czfnxgou

czfnxgou1#

要结束循环,可以使用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

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

yruzcnhs

yruzcnhs2#

只需将iter与sentinel配合使用:

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'
注意,您可能需要一些错误检查,以防用户输入非数字值,如上面的示例。

h79rfbju

h79rfbju3#

您可以使用break来中断循环。

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

sqyvllje4#

要结束循环,可以使用break语句。还可以利用以下事实:如果发出不可转换的值,则会引发ValueError

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)

结果:

$ ./convert 
Convert MM to Inches
*******MM*******
exit
$

或者,如果你只想在字符串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):

$ ./convert 
Convert MM to Inches
*******MM*******
^CBye bye
iezvtpos

iezvtpos5#

在用户输入MM之后测试它是可行的。您可以使用关键字break来打破循环。您的示例在做了一些小的添加之后如下所示。

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)
n8ghc7c1

n8ghc7c16#

import os

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)

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)

相关问题