从浮点字符串到 Int 的 Python 类型转换在创建列表时无法在 for 循环中工作

Posted

技术标签:

【中文标题】从浮点字符串到 Int 的 Python 类型转换在创建列表时无法在 for 循环中工作【英文标题】:Python Typecasting from a float String to Int not working in a for loop while creating a list 【发布时间】:2022-01-17 11:02:39 【问题描述】:

函数 def create_list() 接受列表中所需的元素数量。然后用户将元素插入到列表中。目标是将整数字符串和浮点数转换为整数,然后将其存储到列表中。无法转换的输入存储为字符串。例如,命名来自用户的值并将它们插入到列表中。问题是浮点数仍然保存为字符串

# create a list with a dynamic size
def create_list(num):
    num = int(num)
    my_list = []
    for i in range(num):
        inpt = input(f"enter element i+1:")
        try:
            if int(float(inpt)):
                my_list.append(int(inpt))
        except:
            my_list.append(inpt)

    print(f"Your List => : my_list")


create_list("5")


# print(type(5.751))
# print(int(5.751))
print(bool(int(5.751)))  #> For reference this returns True

这是我的输出:但是 int(5.751) 的布尔返回 True

enter element 1:23
enter element 2:jerry
enter element 3:46
enter element 4:griffin
enter element 5:67.65
Your List => : [23, 'jerry', 46, 'griffin', '67.65']
True

【问题讨论】:

欢迎来到 Stack Overflow。当输入为67.65(提示:作为字符串)时,您希望my_list.append(int(inpt)) 做什么? (提示:你在这条线上转换成float了吗?if int(float(inpt)): 改变了 inpt吗?) 感谢@Karl Knechtel。是的,浮点转换是一个愚蠢的遗漏错误。在线上。我想条件评估为True 的想法让我监督了转换浮点数的本质 【参考方案1】:

因为您使用的是 try except 块,所以它会捕获所有错误。当您尝试追加到列表时,您不会先调用float,因此int 在检测到小数点时会引发异常。相反,您应该先将其转换为浮点数,然后再转换为 int。例如:

def create_list(num):
    num = int(num)
    my_list = []
    for i in range(num):
        inpt = input(f"enter element i+1:")
        try:
            if int(float(inpt)):
                my_list.append(int(float(inpt)))
        except:
            my_list.append(inpt)

    print(f"Your List => : my_list")

【讨论】:

哦,是的。,没想到。完全有道理,现在有效。谢谢@Advay168

以上是关于从浮点字符串到 Int 的 Python 类型转换在创建列表时无法在 for 循环中工作的主要内容,如果未能解决你的问题,请参考以下文章

Python的变量类型

python数据类型之间的转换

python 数据类型间转换

何时使用 trunc() 而不是 int() 将浮点类型数转换为整数更好?

C语言字符串类型转换为整型或浮点怎么做

浮点到 int 类型转换的 PHP 意外结果