如果为True,则将对象从字符串转换为浮点

2024-06-02 11:54:52 发布

您现在位置:Python中文网/ 问答频道 /正文

您好,我是python新手,我无法理解为什么这不起作用

我想让用户输入一个对象作为字符串,如果字符串也可以是浮点,我希望对象类型是浮点

def Representsfloat(s):
    try:
        float(s)
        return True
    except ValueError:
        return False


item_finder = input("Enter an Item to find: ")


def account_finder():
    if Representsfloat(item_finder) == True:
        item_finder = float(item_finder)
    else:
        pass

谢谢


Tags: 对象字符串用户true类型returnfinderdef
3条回答

首先,您正在定义一个函数,但从未调用它

其次,您的代码不能调用在代码中该点尚未定义的函数;另一方面,函数定义不能引用尚未定义的全局变量。但解决方法是不使用全局变量,这本身就是一种改进

第三,与其使用单独的函数检查是否可以将值转换为浮点值,不如将其转换


def account_finder(value):
    try:
        return float(value)
    except ValueError:
        return value

for item_finder in ['1.234', '', 'nope', '12', '1.23e456']:
    print('%s -> %r' % (item_finder, account_finder(item_finder)))

演示:https://ideone.com/fhtLAr

一个函数就可以做到这一点

def Representsfloat(s):
    try:
        return float(s)
    except ValueError:
        return s

while True:
    item_finder = Representsfloat(input("Enter an Item to find: "))

我个人会这样做:

while True:
    item_finder = input("Enter an Item to find: ")
    try: item_finder = float(item_finder)
    except ValueError: pass
    print(type(item_finder), item_finder)

对于可能不存在的值,在Python中我们使用None而不是布尔标志

def try_float(s):
    try:
        return float(s)
    except ValueError:
        return None

在Python3.8中,我们有:=,赋值,“walrus”操作符,它同时是赋值和表达式,这意味着大多数简洁和惯用的代码都是

if f := try_float('2.56'):
    print(f)

在3.8之前,必须在if语句之前检索值:

f = try_float('2.56')
if f:
    print(f)

相关问题 更多 >