Как пользовательский ввод преобразуется в список с помощью Python? - PullRequest
0 голосов
/ 30 сентября 2018
d_num = []
d_num.append(input("Enter a figure to verify if is a Disarium number: "))

При использовании приведенного выше кода ввод значений 135 и print(d_num) будет возвращать '135' вместо '1, 3, 5'.

Быстрое исправление будетпредложить пользователю ввести пробелы или другие символы между цифрами и использовать команду split.Однако это создает проблему, поскольку расчет выходных данных основан на индексе цифры.

Например:

вход: 135 выход: истина, 135 == число дисариума в виде 1 ^ 1+ 3 ^ 2 + 5 ^ 3 = 135

Есть ли более простой способ преобразовать пользовательский ввод, несмотря на type, в список?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Вы хотели знать способ автоматического сохранения каждой цифры пользовательского ввода как элемента списка, верно?Ниже представлен самый простой способ, которым я могу придумать:

user_input = input("Enter a figure to verify if is a Disarium number: ")
d_num = [digit for digit in user_input]

В списке d_num каждая цифра хранится отдельно, а затем вы можете преобразовать ее в целое число / число с плавающей запятой и выполнить вычисление, чтобы определить, является ли это число дисариумом.или нет.

Как предложил @ Jérôme в комментарии, гораздо более простым решением было бы просто преобразовать пользовательский ввод в список, а python обрабатывает добавление отдельных символов в качестве элемента списка.

d_num = [digit for digit in user_input] можно записать как d_num = list(user_input)

Надеюсь, что поможет

0 голосов
/ 30 сентября 2018

Позвонив по номеру list(d_num), вы получите список отдельных символов, составляющих номер.Оттуда вы можете просто перейти через них, преобразовать их в целые числа и поднять их до соответствующей степени:

if int(d_num) == sum((int(d[1])**(d[0] + 1) for d in enumerate(list(d_num)))):
    print("%s is a Disarium number" % d_num)

РЕДАКТИРОВАТЬ: Как прокомментировал Жан-Франсуа Фабр, на самом деле вам не нужен вызов list - вы можете напрямую перечислить символы строки:

if int(d_num) == sum((int(d[1])**(d[0] + 1) for d in enumerate(d_num))):
    print("%s is a Disarium number" % d_num)
...