从浮点字符串到 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 循环中工作的主要内容,如果未能解决你的问题,请参考以下文章