Программа Python дает значение n и вычисляет значение n + nn + nnn, используя цикл for - PullRequest
0 голосов
/ 22 мая 2019

В Python я передаю число в типе str, например, n = '6'. Затем хотите sum_n = n + nn + nnn, используя цикл for

до сих пор я пробовал код ниже, но он выдает ошибку.

"ValueError: недопустимый литерал для int () с основанием 10: ''"

n = '6'
sum_n = 0
for i in range(4):
    n_itr = n*i
    print('printing n_itr', n_itr, type(n_itr))
    sum_n = int(sum_n) + int(n_itr)
    print('printing sum_n ', sum_n)

Я ожидаю, что процесс должен быть sum_n = (6 + 66 + 666), что приводит к 738. Может ли помочь в этом, чтобы понять ошибку и куда я скучаю.

Ответы [ 3 ]

1 голос
/ 22 мая 2019

Просто измените диапазон с range(4) на range(1,4).

range(4) начинает значение для i с 0, где n_itr= n*i оценивается как пустая строка, что в конечном итоге приводит к ошибке int(n_intr).

0 голосов
/ 22 мая 2019

вы можете изменить это так:

n = '6'
sum_n = 0
n_itr = ''
for i in range(3):
    n_itr = n_itr + n
    print('printing n_itr', n_itr, type(n_itr))
    sum_n = int(sum_n) + int(n_itr)
    print('printing sum_n ', sum_n)

дает этот вывод:

('printing n_itr', '6', <type 'str'>)
('printing sum_n ', 6)
('printing n_itr', '66', <type 'str'>)
('printing sum_n ', 72)
('printing n_itr', '666', <type 'str'>)
('printing sum_n ', 738)
0 голосов
/ 22 мая 2019

Попробуйте это в одной строке:

sum_n = sum(map(int, [n*i for i in range(1,4)]))

Вывод :

738

Вам нужно одно изменение в вашем коде:

for i in range(1,4):

int() метод будет выдавать ошибку при попытке преобразовать '' в целочисленную форму.

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