Создание словаря, который содержит (i, i * i), где i от 1 до n - PullRequest
0 голосов
/ 06 сентября 2018

Формат ввода:

Возьмите число n в одной строке.

Формат вывода:

Вывести словарь d в одну строку.

Желаемое поведение, для ввода 8, словарь:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}

Что я пробовал:

n=int(input())
for i in range(1,n+1):
    a=i*i
    print("{",i,": ",a,"}",sep="")

Что это мне дает, для ввода 6:

{1: 1}
{2: 4}
{3: 9}
{4: 16}
{5: 25}
{6: 36}

Ответы [ 4 ]

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

Однолинейное решение

print(''.join(['{', ', '.join([': '.join((str(i), str(i * i),)) for i in range(1, n + 1)]), '}']))

Объяснение

В модуле str есть встроенная функция join. С его помощью вы можете объединить список строк с указанным разделителем.

Следующий пример

','.join(['Hello', 'World'])

вернет строку concat

'Hello, world'

Вы можете видеть, что join очень хорошо обрабатывает поля.

Но учтите, что join принимает один аргумент, список строк. Вы не можете предоставить ему список целых чисел; в противном случае join выдаст сообщение об ошибке:

TypeError: sequence item 0: expected str instance, int found

Таким образом, вы должны принудительно преобразовать целые числа, сгенерированные range, в строки с str.

Ссылки

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

Вы можете создать диктат в одном выражении:

d = dict((i,i*i) for i in range(1,n+1))

при n = 8 вы получите

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
0 голосов
/ 06 сентября 2018

Вы можете создать словарь, используя толкование словаря :

n = int(input())
d = {i: i * i for i in range(1, n + 1)}
print(d)

для 10 вы получите

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}
0 голосов
/ 06 сентября 2018

Если вы хотите напечатать словарь, почему бы просто не сделать его и сохранить его простым, а не усложнять.

n=int(input())
d = {}
for i in range(1,n+1):
    a=i*i
    d[i] = a
print(d)

И вы получите ожидаемый O / P:

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...