2014-10-18 2 views
-2

Это из одного вопроса для моего класса, учась использовать Forloops-accum-if. И я как бы застрял в этом вопросе.Для накопления петель

Мне нужно написать код, который будет использовать накопление.

Это то, что у меня есть до сих пор.

def sequenceDigitsAndStars (dig): 
    st = "*" 
    for i in range(len(dig)): 
     if(st[i].isdigit()): 
      dig = dig + st[i] 
    return st 

Я получаю сообщение об ошибке «Ошибка памяти» с помощью этого кода.

Вопрос гласит, что если я набираю число (то есть 5) для значения , он должен вернуть 0*1*2*3*4*5*. У меня проблемы с этим, я не знаю, как я могу это сделать, чтобы он поместил номер, начиная с 0, чередуясь со звездой (0*). (как я могу заставить его чередовать шаблон 0*, когда я использую число в качестве входного значения?)

+0

Что бы вы ожидали 'len (5)' быть? – jonrsharpe

+0

st [i] - i-й элемент в st – jimifiki

ответ

0

Я думаю, это должно решить вашу проблему.

def sequenceDigitsAndStars (dig): 
    st = "" 
    for i in range(dig + 1): 
     st += str(i) + '*' 
    return st 
+0

Приносим извинения за ошибку. Пожалуйста, удалите downvote – Krasimir

+0

Пример хочет вернуть дополнительные – Krasimir

+0

Спасибо, этот код работает отлично. Спасибо за помощь. :) –

0

Как насчет ...

def sequenceDigitsAndStars (dig): 
    return '*'.join(map(str, range(dig)) 

Это позволит получить диапазон 0 бестраншейного, преобразовать его в массив строк, а затем объединить элементы с * s

Если вы хотите задний *, вы можете сделать

def sequenceDigitsAndStars (dig): 
    return '*'.join(map(str, range(dig)) + '*' 
0

вы пытаетесь сделать-й является?

print "*".join(str(i) for i in xrange(dig+1)) 

Поскольку это домашнее задание вы можете использовать это:

def sequenceDigitsAndStars (dig): 
    string = "" 
    for i in range(dig): 
     string += str(i)+"*" 
    string += str(i+1) 
    return string 

, который имеет несколько проблем с производительностью.

+0

@ Басич и так? Я больше не вижу комментария. Я не могу понять. – jimifiki

Смежные вопросы