То, что вы используете, является неверным синтаксисом. character == 'a' or 'b'
совпадает с (character == 'a') or 'b', which is always
True since
'b' не None`.
Если вы хотите использовать несколько равных, вы должны записать их как character == 'a' or character == 'b' or ...
.
В качестве альтернативы, гораздо лучшее решение (как показано ниже) использует set()
и in
оператор, который проверяет, находится ли символ внутри набора, и возвращает True, если он его находит.
encryptedMessage=""
userMessage = input("you'r message here: ")
userMessage =userMessage.lower()
shift=5
#function
FIRST= set(["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u"])
SECOND = set(["v","w","x","y","z"])
def step2():
#for loop
for character in userMessage:
#5:50AM February 24th, 2020
#looking for global variable
global encryptedMessage
if character in FIRST:
eN = ord(character)
eN+= shift
encryptedMessage+=chr(eN)
#checking for letters that go to random symbols
if character in SECOND:
if character=="v": character=="a"
if character=="w": character=="b"
if character=="x": character=="c"
if character=="y": character=="d"
if character=="z": character=="e"
encryptedMessage+=character
step2()
print(userMessage)
print(encryptedMessage)
И поскольку я только сейчас понял, что это простой шифр вращения, вот еще один пример того, как реализовать это.
Учитывая, что A равно 0, а Z равно 25, вы можете просто повернуть, используя модульную арифметику c как encrypted_char = (char + shift) % 26
. В нашем случае буквы 'a'
и 'z'
не находятся на числе 1, но мы можем легко решить эту проблему, вычтя, а затем добавив начальное значение
A = ord('a')
def lowercase_rotate_cypher( message, shift):
accumulator = []
for character in message:
c = A + ( ( ord(character) + shift - A ) % 26)
accumulator.append( chr(c) )
return ''.join(accumulator)
В вашем случае shift=5
и сообщение передается со входа.