Python: стоп-списки не разделяют два числа git на входе - PullRequest
0 голосов
/ 28 апреля 2020

Всякий раз, когда мой алгоритм вводит в мой список число двух ди git, такое как 10, он вводит его как a = [1, 0], а не a = [10] Как я могу остановить это?

Моя программа предназначена для взять номер пользователя и сгенерировать х количество поколений последовательности Фибоначчи. (1, 1, 2, 3, 5, 8 ...)

Вот мой код:

def get_integar(help_text):
    global num
    num = int(input(help_text))
a = []
get_integar("Enter number of generations: ")
j = 0
x = 0
sum_jx = 0
for i in range(num):
    if j == 0 and x == 0:
        j = 1
        a.extend(str(j))
        x = 1
        a.extend(str(x))
    else:
        sum_jx = j + x
        a.extend(str(sum_jx))
        x = j
        j = sum_jx
    i = i + 1
print(a)

например вот один результат с 7 поколениями:

Введите число поколений: 7
['1', '1', '2', '3', '5', '8', '1', '3', '2', '1']

должно быть

['1', '1', '2', '3', '5', '8', «13», «21»]

Ответы [ 2 ]

1 голос
/ 28 апреля 2020

Попробуйте вместо этого использовать append. Extend увидит вашу строку как повторяемую. Строка как итеративная - это просто список ее символов. Кроме того, первые два числа должны быть 0 и 1, а не 1 и 1, и в названии функции есть опечатка.

def get_integar(help_text):
    global num
    num = int(input(help_text))
a = []
get_integar("Enter number of generations: ")
j = 0
x = 0
sum_jx = 0
for i in range(num):
    if j == 0 and x == 0:
        j = 1
        a.append(str(j))
        x = 1
        a.append(str(x))
    else:
        sum_jx = j + x
        a.append(str(sum_jx))
        x = j
        j = sum_jx
    i = i + 1
print(a)

Документация для расширения и добавления от https://docs.python.org/3/tutorial/datastructures.html:

list.append (x) - Добавить элемент в конец списка. Эквивалентен [len (a):] = [x]. list.extend (повторяемый) - Расширить список, добавив все элементы из повторяемого. Эквивалентен [len (a):] = повторяемый.

0 голосов
/ 28 апреля 2020

Вы можете использовать .extend(), но по-другому, просто замените a.extend(str(x)) на a.extend([str(x)]) (расширяет работает как arr1 + arr2). Смотрите примеры здесь: В чем разница между методами списка Python, добавляющими и расширяющими? .

def get_integar(help_text):
    global num
    num = int(input(help_text))
a = []
get_integar("Enter number of generations: ")
j = 0
x = 0
sum_jx = 0
for i in range(num):
    if j == 0 and x == 0:
        j = 1
        a.extend([str(j)])
        x = 1
        a.extend([str(x)])
    else:
        sum_jx = j + x
        a.extend([str(sum_jx)])
        x = j
        j = sum_jx
    i = i + 1
print(a)

РЕДАКТИРОВАТЬ: более естественный способ - использовать .append(elem), а затем map(str, arr1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...