2017-01-05 3 views
0

im запись функции, которая принимает данные двух параметров, которые должны быть реплицированы, и время, которое представляет собой количество раз, когда данные должны быть реплицированы. им новых для питона, может кто-нибудь помочьзапись функции для репликации данных

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

Ваш 'output' переменной с примера ввода данного не содержит пробел (который вы используете, чтобы разделить на). – Evert

ответ

0

Этот код прокомментирован и даст вам желаемый результат, но использует петлю для измерения размера times.

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] 
+0

большое спасибо – Dolapo

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 
Смежные вопросы