首页 > 解决方案 > 9.2.9:字符串转整数

问题描述

我有一个任务,我被困住了。以下是说明。

创建一个名为 safe_int 的函数,它接受一个参数。此函数应尝试将参数转换为整数。如果成功,该函数应返回该整数。否则,该函数应返回 0。

然后,在列表推导中使用此函数从给定列表中创建一个列表。新列表应该包含一个 0 或正确的整数来代替给定列表中的每个字符串: [0, 2, 7, 0] 确保打印出结果列表。

这是我到目前为止得到的

list_of_strings = ["a", "2", "7", "zebra"]

num=[]
a=input("Enter the number count")
i=0

for i in range(0,int(a)):
   b=input("Enter the number")
   num.append(b)

def safe_int(num):
    i=0
    list = [int(x) if x.isdigit() else 0 for x in list_of_strings]
    print list
    for i in range(0,int(a)-1):
        if( num[i].isdigit()):
            num[i]=num[i]
    else:
        num[i]=0
safe_int(num)
print(num)

要求如下:

我无法满足此要求:

有人知道怎么做吗?

标签: pythonstringlistloopsinteger

解决方案


我认为你过于复杂了。这应该涵盖所有这些基础:

def safe_int(string):
    return int(string) if string.isdigit() else 0

list_of_strings = ["a", "2", "7", "zebra"]
list_of_numbers = [safe_int(num) for num in list_of_strings] # <-- use the function INSIDE the list comprehension
print(list_of_numbers)

输出

[0, 2, 7, 0]

小费:

我通常尽量不让我的函数使用超出其范围的任何变量。仅使用常量 (IN_ALL_CAPS) 并在功能块中传递变量。在建模类时它将为您提供良好的服务并使调试更容易。


推荐阅读