def make_to_str_list(list):
for c in range(0, len(list)):
list[c] = str(list[c])
return list
def count_zeros(list):
i = 0 # setting up the counter
list = make_to_str_list(list) # changes the list from a list of integers to a list of strings
print(list)
string = ''.join(list) # changes list to a string
print(string)
while string.find('0') != -1: # this is checking if there is a '0' in the string
del list[string.find('0')] # this deletes the '0' from the string
string = ''.join(list) # this updates the string for the while loop
print(string)
i += 1 # adds a count
return i # returns the count
x = [1, 2, 0, 4, 0, 6, 7, 8, 9]
print(x)
print(count_zeros(x))
print(x)
您好,我是python的新手,我一直在尝试使用函数。
make_to_str_list
函数接受一个数字列表,并将其替换为数字的字符串版本,以便在count_zeros
函数中使用。我对make_to_str_list
功能没有任何问题。我遇到的问题是当我将列表x
传递给count_zeros
函数时,该函数会改变代码剩余部分的列表。问题似乎在于while循环,因为我可以删除循环,它不再为整个代码改变x
。我还注意到,如果我将return i
缩进到while循环中,它还会阻止列表x
被替换为代码的其余部分。但是,我假设这是因为它在while循环期间过早地停止了函数,因为函数返回1
而不是我期待的2
。以下是从代码中打印的内容:[1, 2, 0, 4, 0, 6, 7, 8, 9]
['1', '2', '0', '4', '0', '6', '7', '8', '9']
120406789
12406789
1246789
2
['1', '2', '4', '6', '7', '8', '9']
第一个打印来自函数之前,以确保x = [1, 2, 0, 4, 0, 6, 7, 8, 9]
接下来的四个打印来自函数内部。打印2
是函数返回的值,打印['1', '2', '4', '6', '7', '8', '9']
是调用函数后更改的x
列表。