【问题标题】:9.2.9: Strings To Integers9.2.9:字符串转整数
【发布时间】:2020-08-24 10:43:02
【问题描述】:

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

创建一个名为 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)

要求如下:

  • 你应该定义一个名为“safe_int”的函数成功

  • 函数“safe_int”应该只接受 1 个参数成功

  • 你应该调用函数 safe_int Success

  • 您应该在列表解析失败中使用 safe_int

  • 你应该仍然定义了“list_of_strings”成功

  • list_of_strings 应包含非整数元素成功

  • 您应该将非整数值替换为 0 Success

我无法满足此要求:

  • 您应该在列表理解失败中使用 safe_int

有人知道怎么做吗?

【问题讨论】:

  • 什么是成功和失败?

标签: python string list loops integer


【解决方案1】:

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

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) 并在功能块中传递变量。它可以很好地为您建模类并简化调试。

【讨论】:

  • 如果你真的想花哨,你可以处理十进制值并四舍五入到最接近的 int ;)
猜你喜欢
  • 2011-03-14
  • 2014-12-16
  • 1970-01-01
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多