【问题标题】:python gives me unexpected variable [duplicate]python给了我意想不到的变量[重复]
【发布时间】:2020-06-17 06:01:43
【问题描述】:
def check(checked):
    checked = {}
    if checked == float:
        return format(checked, '.2f')
    else:
        checked = "not a float"
        return checked

# convert to float and check

a = input('Enter price for item 1 : ')
a = check(a)

b = input('Enter price for item 2 : ')
c = input('Enter price for item 3 : ')
d = input('Enter price for item 4 : ')
e = input('Enter price for item 5 : ')

print(a) 

每当我使用 a 的输入并期望它改变时,即使它有小数点,它也不会返回浮点数。我试图将一个数字限制为小数点后 2 位,如果它不是浮点值,请忽略它。我输入了else 语句,看看出了什么问题我尝试使用is 而不是==,但我仍然得到相同的结果。

【问题讨论】:

  • 这能回答你的问题吗? Determine the type of an object? 首先你通过checked = {} 重新分配你的论点。然后你将它与 type float 进行比较。这将始终是False。检查链接以了解如何确定对象的类型

标签: python python-3.x


【解决方案1】:

您正在重新分配 checked 变量。不要那样做。

def check(checked):
    if isinstance(checked, float):
        return format(checked, '.2f')
    else:
        return "not a float"

不确定你想用checked = {} 实现什么,但它似乎所做的只是确保检查的始终是字典,绝不是浮点数,也绝不是实际的回合值。

要测试某物是否为浮点数,请使用isinstance,而不是==is

然后将检查重新分配给返回“不是浮点数”的消息只是不好的做法。

请参阅上述内容以获得更清洁且(希望)有效的实施

【讨论】:

    【解决方案2】:

    在python中,无论你采用整数、浮点数还是其他任何输入,输入都是字符串数据类型。

    这是您问题的解决方案,只有输入为正值且输入为浮点数或整数时才有效。

    代码:

    def check(checked):
    
        if checked.isdigit():
            return checked
        else:
            return format(float(checked), '.2f')
    
    a = input('Enter price for item 1 : ')
    print(check(a))
    
    

    如果输入浮点值,此代码将返回最多 2 位小数的浮点值,如果不是浮点值,则将保持原样

    【讨论】:

      猜你喜欢
      • 2017-10-26
      • 1970-01-01
      • 2017-11-30
      • 2013-07-19
      • 2013-03-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-21
      • 2016-12-17
      相关资源
      最近更新 更多