之前我在每个选项选项中重复打印菜单上的类似代码,但是我将它从if更改为if和elif但不起作用?它不断出现语法错误
option = 0
while option !=4:
# Prints the menu to the screen
print("*** Menu *** \n")
print("1. Encrypt string")
print("2. Decrypt string")
print("3. Brute force decryption")
print("4. Quit \n")
# Prompts the user
option = int(input("What would you like to do [1,2,3,4]? "))
# input error
if option ==1:
#if the user's selection equals 1
# Prints to the screen the chosen option and prompts the user to input
print("In command 1 - encrypt string \n")
string = input("Please enter string to encrypt: ")
offsetvalue = int(input("Please enter positive offset value: "))
print("")
# input error
while offsetvalue > 26 or offsetvalue < 1:
offsetvalue = int(input("Please enter a positive offset value between 1 - 26: "))
# Assigns the 'Encryption' variable
# letter which is encrypted
Encryption = ""
# Loops the input in variable 'code' for each letter
for letter in string:
# Converts each letter in 'code' to an ASCII value
# and adds the positive offset value
encryption_num = ord(letter)
encryption_num += offsetvalue
# Loops the ASCII value
if encryption_num > 126:
encryption_num -= 94
# adds it to the total string
encryption_num = chr(encryption_num)
Encryption += encryption_num
# encrypted string to the screen
print("\nEncrypted string:")
print(Encryption)
elif option == 2:
# prompts the user to input
print("In command 2 - decrypt string \n")
string = input("Please enter string to decrypt: ")
offsetvalue = int(input("Please enter negative offset value: "))
print("")
# input error
while offsetvalue < -26 or offsetvalue > -1:
offsetvalue = int(input("Please enter negative offset value between -1 - -26: "))
# Assigns the 'Decryption' variable
# letter which is decrypted
Decryption = ""
# Loops the input in variable 'string'
for letter in string:
# adds variable 'string' to an ASCII value
# adds negative offset value
decryption_num = ord(letter)
decryption_num += offsetvalue
# Loops the ASCII value to beginning if True
if decryption_num < 32:
decryption_num += 94
# Converts the letter back into a string and adds it to the total string
decryption_num = chr(decryption_num)
Decryption += decryption_num
# Prints the entire decrypted string to the screen
print("\nDecrypted string:")
print(Decryption)
这是强调错误的地方,elif语句不确定原因?它在python中出现了一条无效的消息。
elif option == 3:
print("in command 3 -brute force \n")
string = input("please enter string to decrypt: ")
offsetvalue = -0
while offsetvalue != -26:
decryption_num = 0
Decryption = ""
while Decryption < len(letter):
c = ord(string[decryption_num]) + offsetvalue
if c < 0:
c += 128
decryption_num = chr(c)
Decryption += decryption_str
decryption_num += 1
offsetvalue -= 1
print ("\noffset", offsetvalue, "=Decrypted string:", Decryption)
# Prompts the user for their selection
option = int(input("What would you like to do [1,2,3,4]? "))
#input error
elif option == 4:
print ("\nGoodbye")
答案 0 :(得分:1)
elif
或while
之后,您不能拥有for
。 elif
只能在if
或其他elif
后出现。你的意思是while
在前一个if
下缩进吗?
您的代码还有其他问题。您似乎将字符串与数字(Decryption < len(letter)
)进行比较。
你有这样的事情:
if option == 2:
# stuff
while something:
# stuff
elif option == 3:
# stuff
你做不到。你可能意味着这个:
if option == 2:
# stuff
while something:
# stuff
elif option == 3:
# stuff
但是,我无法确切地告诉您要更改的内容,因为我不确切地知道您希望代码执行什么操作。我建议你阅读the Python tutorial以熟悉Python的基础知识。