你可以称之为家庭作业问题。 我正在做一个CodeWar挑战,基本上,我得到一串数字,我应该返回最大值和最小值。 我已经完成了这个问题,但有一个问题。 例如,"1 2 3 4 555"应返回"555 1"。 我知道max
和min
功能,但我还不需要这个。
我为我制作的给定字符串列表中的每个 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]
. 然后,我将使用max
和min
函数来获取最小值和最大值。
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
。