我如何强制我的代码在python打印 [英] How do i force my code to print in python
问题描述
我无法在我的代码中找出错误。它不打印最终产品并留下空白。
I'm having trouble trying to work out an error in my code. It isn't printing the final product and leaving a blank space.
playing = True
string = ""
Alphabet = ('z','a','b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z')
while playing == True:
string = ""
eord = input('Type "d" to "decrypt" and "e" to "encrypt": ')
if eord == 'e':
texte = input ("Type your word to encrypt: ")
key1 = int(input("Choose a key between 1-26: "))
for letter in texte:
number = (ord(letter)) + (key1)
letter=(chr(number))
string = (str(string)) + (str(letter))
print (string)
keyword = input ("Type 'encrypt' code further or 'decrypt' further: ")
if keyword == 'encrypt':
plainText = input("Please enter the plain text: ")
key = input("Please enter the key: ")
keyList = []
keyLength = 0
while keyLength < len(plainText):
for char in key:
if keyLength < len(plainText):
keyList.append(str(char))
keyLength = keyLength + 1
CipherText = []
IndexValue = 0
keyIncrement = 0
for plainTextChar in plainText:
IndexValue = Alphabet.index(keyList[keyIncrement]) + Alphabet.index(plainTextChar)
while IndexValue > 26:
IndexValue = IndexValue - 26
CipherText.append(Alphabet[IndexValue])
keyIncrement = keyIncrement + 1
print (''.join(CipherText))
import sys
sys.stdout.flush()
finish = input('Would you like to go again Y or N')
if finish == 'n' or 'N':
retry = input ("Would you like to go again? Y or N: ")
if retry == 'N' or 'n':
print ("Please exit the window")
import sys
sys.exit()
elif eord == 'd':
texd = input ("Type your word to decrypt: ")
key2 = int(input("Choose a key between 1-16: "))
for letter in texd:
number = (ord(letter)) - (key2)
letter=(chr(number))
string = (str(string)) + (str(letter))
print (string)
keyword = input ("Type 'encrypt' code further or 'decrypt' further: ")
if keyword == 'decrypt':
plainText = input("Please enter the plain text: ")
key = input("Please enter the key: ")
keyList = []
keyLength = 0
while keyLength < len(plainText):
for char in key:
if keyLength < len(plainText):
keyList.append(str(char))
keyLength = keyLength - 1
completeCipherText = []
cipherCharIndexValue = 0
keyIncrement = 0
for plainTextChar in plainText:
cipherCharIndexValue = Alphabet.index(keyList[keyIncrement]) + Alphabet.index(plainTextChar)
while cipherCharIndexValue > 26:
cipherCharIndexValue = cipherCharIndexValue + 26
completeCipherText.append(Alphabet[cipherCharIndexValue])
keyIncrement = keyIncrement - 1
print (''.join(completeCipherText))
finish = input('Would you like to go again Y or N')
if finish == 'n' or 'N':
retry = input ("Would you like to go again? Y or N: ")
if retry == 'N' or 'n':
print ("Please exit the window")
import sys
sys.exit()
有没有办法解决这个问题或强制打印?
Is there a way i can fix this or force it to print?
这是代码的输出。
Type "d" to "decrypt" and "e" to "encrypt": e
Type your word to encrypt: hello
Choose a key between 1-26: 3
khoor
Type 'encrypt' code further or 'decrypt' further: encrypt
Please enter the plain text: python
Please enter the key: cipher
Would you like to go again Y or N
推荐答案
您的标签间距有问题。具体如下:
You have the problem with tab spacing. Concretely here:
while IndexValue > 26:
IndexValue = IndexValue - 26
CipherText.append(Alphabet[IndexValue])
keyIncrement = keyIncrement + 1
对于第一遍,IndexValue是19,所以它也跳过CipherText附加。因此没有任何打印出来。
For the first pass the IndexValue is 19, so it skips also CipherText append. And therefore there is nothing to print out.
正确的缩进位置:
while IndexValue > 26:
IndexValue = IndexValue - 26
CipherText.append(Alphabet[IndexValue])
keyIncrement = keyIncrement + 1
然后您再次询问是否在加密for循环中完成。
Then again you are asking whether to finish when still in the encrypting for loop.
但是,您的其他缺陷设计。如果键长于1个字符,则由于键列表只有1个项目而导致索引错误。而您期望在for循环中的keyList中有更多的项目。
However you have other flaws in your design. If the key is longer than 1 char you end up in Index error due to the keyList having just just 1 item. While you expect more items in keyList in the for loop.
这篇关于我如何强制我的代码在python打印的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!