Python 3.4函数';错误';输出

Python 3.4函数';错误';输出,python,Python,我有问题,让这个后续计划的工作,因为我想它。我有一个步骤困扰着我,我会很快地回顾一下什么是第一步程序采用2个参数,压力和单位,如果压力是整数,单位是“pascal”、“torr”、“atm”或“mbar”,我希望它返回“pressure=”,pressure,unit。这很有效。如果我没有输入正确的单位,我希望函数打印“'unit'不是一个可接受的单位”,这是可行的。问题部分:当变量压力被给定一个浮点数为35.2或字符串作为“test”,但我给变量单位一个正确的单位,如mbar,我得到输出输入一

我有问题,让这个后续计划的工作,因为我想它。我有一个步骤困扰着我,我会很快地回顾一下什么是第一步
程序采用2个参数,压力和单位,如果压力是整数,单位是“pascal”、“torr”、“atm”或“mbar”,我希望它返回“pressure=”,pressure,unit。这很有效。如果我没有输入正确的单位,我希望函数打印“'unit'不是一个可接受的单位”,这是可行的。

问题部分:当变量压力被给定一个浮点数为35.2或字符串作为“test”,但我给变量单位一个正确的单位,如mbar,我得到输出

输入一个整数和一个单位(用、):3045.2,mbar
“3045.2”不是整数
“mbar”不是可接受的单位

显然,这并不像我希望的那样有效,“mbar”是一个公认的单元。任何帮助都将不胜感激。编辑:我对整体编程还很陌生,所以请记住:X
我编写的程序:

pressure, unit = input("Enter an integer and a unit(seperated by ,): ").split(',')
def func(pressure, unit):
    try:
        pressure=int(pressure)
    except ValueError:
        print("'"+pressure+"'" + " is not an integer")
    if(isinstance(pressure,int) and (unit == "pascal" or unit == "mbar" or unit == "atm" or unit == "torr")):
        print("pressure =",pressure,unit)
    elif(unit != "pascal" or unit != "mbar" or unit != "atm" or unit != "torr"):
        print("'"+unit+"'" + " is not an accepted unit")
func(pressure, unit)

如果单位为
mbar
,但该值为浮点值,则该检查也将为
False

if(isinstance(pressure,int) and (unit == "pascal" or unit == "mbar" or unit == "atm" or unit == "torr")):

这就是为什么你会收到“不是一个可接受的单位”的信息。您需要完全分别检查这两项:值是否为整数(是/否)以及单位是否有效(是/否)。如果两者都是这样,则可以打印成功消息。否则,您将需要独立打印一条或两条故障消息。

您应使用
else
作为
除外
子句-仅当
int(pressure)
正确运行时,它才会运行。此外,不要改变变量的类型;令人困惑的是:

def func(str_pressure, unit):
    try:
        pressure = int(str_pressure)
    except ValueError:
        print("'{}' is not an integer".format(str_pressure))
    else:
        # `pressure` is assigned
        if unit in {"pascal", "mbar", "atm", "torr"}:
            print("pressure = {} {}".format(pressure, unit))
        else:
            print("'{}' is not an accepted unit".format(unit))

pressure, unit = input("Enter an integer and a unit(seperated by ,): ").split(',')
func(pressure, unit)

为什么使用“拆分”?没有具体原因,我只是想在一个输入中指定变量“压力”和“单位”。我可以用两个单独的输入来完成,x,y=input(“text”)。split(“,”)只会将x分配给“,”之前的第一个文本,将y分配给“,”之后的任何文本。这是否会影响功能,或者只是一个关于拆分的一般问题?谢谢你的回答。由于我对编程还很陌生,我有一个问题,那就是做这件事最有效的方法是什么;我的总体想法是使用嵌套的if语句。还有更有效的方法吗?再次感谢您的快速回复。在这种情况下,它不会产生任何影响,因此您可以通过任何一种方式修复程序的逻辑。