循环和条件后缺少数组的元素.结果是一个包含 3 个元素而不是 4 个元素的数组.4 而不是 5,依此类推



你可以称之为家庭作业问题。 我正在做一个CodeWar挑战,基本上,我得到一串数字,我应该返回最大值和最小值。 我已经完成了这个问题,但有一个问题。 例如,"1 2 3 4 555"应返回"555 1"。 我知道maxmin功能,但我还不需要这个。

我为我制作的给定字符串列表中的每个 x 创建了一个 for 循环。 例如,"1 2 3 4 555"更改为列表["1", " ", "2", " ", "3", " ", "4", " ", "5", "5", "5"]。 我已经嵌套了一些if语句,以将 x 或字符串中的数字添加到具有一些条件的新数组中。["1", " ", "2", " ", "3", " ", "4", " ", "5", "5", "5"]-->[1, 2, 3, 555]. 相反,我得到了[1, 2, 3]. 我已经获得了[1, 2, 3, 555]或任何数组而不会丢失元素,现在这个。

这是我的代码。 我想要[1, 2, 3, 555]而不是[1, 2, 3]. 然后,我将使用maxmin函数来获取最小值和最大值。

def high_and_low(numbers):
numbers = numbers
toList = list(numbers)
print(toList)
newList = []
string = ''
for x in toList:
if x != ' ': #number
string += x
print(string)
else: #elif x == ' ': #anything that's not a number.  Space for example
newList.append(int(string)) #we 'add' number to new list before space.  Converted number string to integar.
#then
string = '' #reset to empty so we can add next number to empty without worrying about adding number we do not need.
print(newList) #[1,2,3] instead of [1, 2, 3, 555] is what I wanted.  If I called high_and_low("1 2 3 555 3"), I can get [1, 2, 3, 555]
high_and_low("1 2 3 555")  # return "555 1"

没有注释的相同代码:

def high_and_low(numbers):
numbers = numbers
toList = list(numbers)
print(toList)
newList = []
string = ''
for x in toList:
if x != ' ':
string += x
print(string)
else: #elif x == ' ':
newList.append(int(string))
string = ''
print(newList)
high_and_low("1 2 3 555")  # return "555 1"

我期望输出[1, 2, 3, 555],但实际输出是[1, 2, 3]。 如果我打电话给high_and_low("1 2 3 555 3"),我可以得到[1, 2, 3, 555]

与其使用list(),我建议改用str.split()函数。这将通过分隔符(即分隔字符串所需部分的字符(将字符串拆分为列表。

因此,在您的示例中,请考虑使用类似以下内容的内容:

toList = numbers.split( ' ' )

该行告诉 Python 将你的字符串、numbers与空格分隔符' '拆分,并将其存储到一个列表中,toList

最新更新