例如,我被赋予了转换一串混合数字(“1 3 5 8 10”)的任务,我的目标是将这些数字作为整数放入列表中。
我有知识和诀窍来分割字符串和int()它们将它们转换为整数,但问题在于我是怎么做的。
我遇到的具体问题是循环字符串,查找字符并将其转换为整数。
当它循环并达到10(或任何2位数字)时,它会将每个数字转换为自己的数字;所以:10将是[1,0],而不是[10]。
请原谅我这里乱七八糟的代码,我一直试图看看印刷品每一步的内容是什么:
def iq_test(numbers):
print(numbers)
nums = []
numbers.split(" ")
nums.append(numbers)
print (numbers)
for char in numbers:
if char == " ":
del char
else:
nums.append(int(char)) # Problem arises here, where a 2 digit number is being added to the list as 2 separate numbers
print(nums)
编码还是很新的,所以如果你发现我遇到了一个重大的逻辑问题,如果你向我指出,我会很感激。
答案 0 :(得分:2)
首先,numbers.split(" ")
本身并没有做任何有用的事情。将其分配给变量。此外,如果您不提供参数,它将始终在空格上分割,因此您可以使用它。
nums = numbers.split()
这样,您应该使用for num in nums
循环分割元素,而不是循环输入字符串的字符。
在任何情况下,您都可以通过使用list-comprehension来应用该int函数并返回整数列表来缩短所有这些。
并且您已经定义了一个函数,因此您应该return
该值,而不仅仅是打印它。
nums = [int(s) for s in numbers.split()]
return nums
然后你会print(iq_test("1 2 3 10"))
答案 1 :(得分:1)
您可以使用正则表达式:
import re
s = "1 3 5 8 10"
final_data = list(map(int, re.findall('\d+', s)))
print(final_data)
输出:
[1, 3, 5, 8, 10]
答案 2 :(得分:0)
def iq_test(numbers):
nums = []
for num in numbers.split():
nums.append(int(num))
我猜...你可以(而且可能应该)只做一个列表理解
nums = [int(num) for num in numbers.split()]
答案 3 :(得分:0)
您使用错误的数组进行迭代并进行错误的转换:
def iq_test(numbers):
print(numbers)
nums = []
for number in numbers.split(" "):
nums.append(int(number))
print(nums)