2016-02-15 4 views
-3
codeword = input('Enter codeword : ') 
codeword = codeword.lower().replace(" ", "") 
for i in codeword: 
    old = (chr(ord(i))) 

encrypt = input('Enter text to encrypt : ') 
encrypt = encrypt.lower().replace(" ", "") 
for i in encrypt: 
    new = (chr(ord(i))) 
for i in encrypt: 
    out = ord(old) + ord(new) -96 
print(chr(out)) 

Выше мой полный код до сих пор. Однако, если я вхожу в «привет» для кодового слова и шифрования, все, что напечатано, это «r». Кто-нибудь может указать на мою ошибку, поскольку я пробовал все, что мог придумать, я вполне уверен, что моя ошибка лежит внутри цикла for. Но если я делаю «для i в encrypt + codeword», он печатает «r» все еще , Я никогда не знал, что такое простое объяснение, может иметь столько трудностей.Могу ли я остановить цикл for в заданном коде от неправильного количества раз, не избавившись от цикла for?

Большое спасибо.

Я отредактировал этот код и показал его ниже, но я все еще борется. Я знаю, что есть много людей, которые знают это, но я новый, я попытался исследование, но мне не удалось найти что-нибудь

codeword = input('Enter codeword : ') 
codeword = codeword.lower().replace(" ", "") 
old = codeword[-1] 

encrypt = input('Enter text to encrypt : ') 
encrypt = encrypt.lower().replace(" ", "") 
new = encrypt[-1] 
for i in new: 
    print(chr(ord(old)+ ord(new)-96)) 

* Я еще раз сделал дальнейшее редактирование и подготовил программу, которая делает почти достаточно того, что я хочу, но есть небольшая проблема, он печатает его дважды, но если я избавлюсь от for loop, я не допущу, чтобы программа вообще ничего не печатала.

codeword = input('Enter codeword : ') 
codeword = codeword.lower().replace(" ", "") 

encrypt = input('Enter text to encrypt : ') 
encrypt = encrypt.lower().replace(" ", "") 

for i in codeword+encrypt: 
    print(chr(ord(i)+ ord(i)-96)) 

К сожалению, если я ставлю «привет», как и кодовое слово и, как зашифровать, он печатает, р г р г

+2

'chr (ord (i))' просто дает вам 'i'. Это для цикла эквивалентно 'new = encrypt [-1]'. То же самое с первым для цикла – SirParselot

+0

Спасибо, у меня все еще возникают трудности с тем, что он только печатает последний символ. –

+0

Все, что вы делаете, переназначает «старое» на каждой итерации цикла. –

ответ

1

Ваша проблема не существует в третьей для цикла. Он существует в первых двух. Вы устанавливаете старый и новый для последнего символа codeword и encrypt. Затем вы переходите к шифрованию для третьего. У вас есть только одно значение для old и new, поэтому вы выполняете ту же операцию length of encrypt раз, которая даст вам один символ или, возможно, ошибку.

codeword = input('Enter codeword : ') 
codeword = codeword.lower().replace(" ", "") 

old = codeword[-1] 
print (old) 

encrypt = input('Enter text to encrypt : ') 
encrypt = encrypt.lower().replace(" ", "") 

new = encrypt[-1] 
print (new) 

for i in encrypt: 

    out = ord(old) + ord(new) - 96 
    print (out, old, new, i) 
print(chr(out)) 

Enter codeword : Hello 
o 

Enter text to encrypt : Hello 
o 

126 o o h 
126 o o e 
126 o o l 
126 o o l 
126 o o o 

~ 

Больше ничего не могу сделать, так как вы не описали проблему.

+0

Спасибо. Теперь я понимаю проблему намного лучше, я буду работать над кодом и попытаюсь его исправить. Я очень ценю ваше время и усилия. –