我正在编写一个函数,该函数接收两个要复制的参数数据,以及应该复制数据的次数。 我是python的新手,任何人都可以帮忙
def replicate_iter(times, data):
output = times * data
if type(data) != str:
raise ValueError('Invalid')
if times <= 0:
return []
else:
return output.split(' ')
print replicate_iter(4, '5') #expected output [5, 5, 5, 5]
['5555']
答案 0 :(得分:0)
您正在返回output.split(' ')
,但您的输入'5'
不包含空格。
因此'5555'.split(' ')
会返回['5555']
。您将需要更改返回条件或在元素之间添加空格。
添加空格:(这假设您的字符串本身不包含空格)
output = (times * (data + " ")).rstrip() # add a trailing space between elements and remove the last one
更改返回/函数:(这将支持带空格的字符串)
def replicate_iter(times, data):
output = []
if type(data) != str:
raise ValueError('Invalid')
while len(output) < times:
output.append(data)
return output
答案 1 :(得分:0)
此代码已注释,将为您提供所需的输出,但使用大小为times
的for循环。
def replicate_iter(times, data):
output = [] #you can initialize your list here
if type(data) != str:
raise ValueError('Invalid')
#if times <= 0: # Since input was initialized earlier
# return [] # These two lines become unnecessary
else:
for i in range(times): #use a for loop to append to your list
output.append(int(data)) #coerce data from string to int
return output #return the list and control to environment
print replicate_iter(4, '5')
输出是:
[5, 5, 5, 5]