какой тип я должен использовать вместо int или str? - PullRequest
0 голосов
/ 03 марта 2019

Сначала позвольте мне объяснить код: мой код является кодом шифрования.сначала он дает два числа, затем он имеет две стадии шифрования.На первом этапе текст будет инвертироваться до тех пор, пока его индекс не станет равным первому числу.Второй этап, смещает символы выходных данных предыдущего этапа в количестве их нового местоположения, умноженном на второе число.и, наконец, распечатать то, что зашифровано.в этом коде у меня проблема с 7-й строкой кода.не знаю, какой тип я должен использовать для переменных, которые находятся в 7-й строке.я получаю ошибку, использую ли я str или int.

first_num=int(input("Fnum: "))
second_num=input("Snum: ")
encrypt_stage1="".join(name[first_num-1::-1])+"".join(name[first_num::])

for place,char in enumerate(encrypt_stage1):
    ascii_code=ord(char)
    encryption_stage2=""
    encryption_stage2 += chr(str(int(ascii_code)+place*second_num))

print(encryption_stage2)
>>>TypeError: unsupported operand type(s) for +: 'int' and 'str'


----------
example of input: name=vahid, first_num=1, second_num=3
output will be: ygqus

1 Ответ

0 голосов
/ 03 марта 2019

Есть как минимум три проблемы:

  • , которые вы забыли конвертировать second_num в int
  • , которые нельзя применить chr() в str(), яудалено chr() вызов
  • Мне нужно переместить encryption_stage2="" вне цикла, чтобы не переназначать его на каждой итерации

После решения этих проблем код выглядит следующим образом:

name = 'name'
first_num=int(input("Fnum: "))
second_num=int(input("Snum: "))
encrypt_stage1="".join(name[first_num-1::-1])+"".join(name[first_num::])

encryption_stage2=""
for place,char in enumerate(encrypt_stage1):
    ascii_code=ord(char)
    encryption_stage2 += str(int(ascii_code)+place*second_num)

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