Как можно вводить текст с пробелами, но чтобы все пробелы убирались программой до начала расчётов?

Олег 1975

Новичок
Пользователь
Сен 16, 2020
2
0
1
Вот программа для перевода вводимого текста в числовые значения букв. Всё бы ничего, но при вводе текста с пробелами на выходе в списке числовых значений букв с пробелом выдаёт четырёхзначное отрицательное число, обозначающее пробел, а мне нужно, чтобы пробелы на выходе получали нулевое значение. Как это сделать? И ещё - как сделать, чтобы вводить текст с клавиатуры неоднократно и получать расчеты на каждый такой ввод? Вот листинг программы.

characters = [' ''а''б''в''г''д''е''ё''ж''з''и''й''к''л''м''н''о''п''р''с''т''у''ф''х''ц''ч''ш''щ''ъ''ы''ь''э''ю''я']
numbers = ['0''1''2''3''4''5''6''7''8''9''10''11''12''13''14''15''16''17''18''19''20''21''22''23''24''25''26''27''28''29''30''31''32''33']
inp = input('Введите текст: ')
inp = inp.lower()
output = []
for character in inp:
number = ord(character) - 1071
output.append(number)

print(output)

def listsum(output):
theSum = 0
for i in output:
theSum = theSum + i

return theSum


print('Прoмежуточное число:', listsum(output))

s = str(listsum(output))
sm = 0
for i in range(len(s)):
sm+=int(s)

print('Итоговое Число:', sm)
n = input('Нажмите любую клавишу...')
 

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
// при вводе текста с пробелами на выходе в списке числовых значений букв с пробелом выдаёт четырёхзначное отрицательное число, обозначающее пробел,

Это отрицательное число не означает пробел. Оно же в цикле у вас получает номер символа в юникоде (пробел 32)и отнимает от него 1071. Так и получается -1039

//мне нужно, чтобы пробелы на выходе получали нулевое значение. Как это сделать?
Например создать словарь, где прописано соответствие цифр и букв. {' ':0, 'a':1, 'b':2.......}
 

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
мне нужно, чтобы пробелы на выходе получали нулевое значение. Как это сделать? И ещё - как сделать, чтобы вводить текст с клавиатуры неоднократно и получать расчеты на каждый такой ввод?
Вот пример:
Python:
characters = [' ', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я']

# возвращает число (позицию символа) или 0 если пробел
def char_to_ord(letter):
    return ord(letter) - 1071 if letter != ' ' else 0


# цикл
while True:
    inp = input('Введите текст: ')

    # выход из цикла
    if inp.lower() == 'выход':
        break

    # заменяет все введенные символы на числа, если символ есть в списке characters
    output = [char_to_ord(s) for s in inp.lower() if s in characters]
    print(output)
    x = sum(output)
    print('Прoмежуточное число:', x)
    print('Итоговое Число:', x * len(str(x)))
 

Форум IT Специалистов