MAX_KEY_SIZE = 26
def getMode():
while True:
print('Do you wish to encrypt or decrypt a message?')
mode = input().lower()
if mode in 'encrypt e decrypt d'.split():
return mode
else:
print('Enter either "encrypt" or "e" or "decrypt" or "d".')
def getMessage():
print('Enter your message:')
return input()
def getKey():
key = 0
while True:
print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
key = int(input())
if (key >= 1 and key <= MAX_KEY_SIZE):
return key
def getTranslatedMessage(mode, message, key):
if mode[0] == 'd':
key = -key
translated = ''
for symbol in message:
if symbol.isalpha():
num = ord(symbol)
num += key
if symbol.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
elif symbol.islower():
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
translated += chr(num)
else:
translated += symbol
return translated
mode = getMode()
message = getMessage()
key = getKey()
print('Your translated text is:')
print(getTranslatedMessage(mode, message, key))
当我运行上述python程序时,Visual Studio Code给我以下错误:
[正在运行] python -u“ e:\ College Work \ HND Cyber 安全性\编程\ Python \块1 \算法和程序\未完成 工作(要完成的程序和文档)\ Ceaser密码程序 (需要执行程序和文档)\ Caeser Shift Program.py“
文件“ e:\ College Work \ HND网络安全\ Programming \ Python \ Block 1 \算法和程序\未完成的工作(程序和文档 完成)\ Ceaser密码程序(程序和文档 )\ Caeser Shift Program.py“
第15行 返回input() ^ TabError:缩进中的制表符和空格不一致使用
[Done]在0.145秒内以代码= 1退出了
我尝试几次更改缩进,但没有运气。谁能解释这个问题可能是什么,我可以怎么解决?
编辑:我在下面的答案中找到了解决我的问题的方法。我要感谢所有停下来帮助我的人。
答案 0 :(得分:1)
在Visual Studio Code中,执行CTRL
+ SHIFT
+ P
,然后输入“缩进”。您将看到用于转换缩进的选项:Convert Indentation to Spaces
或Convert Indentation to Tabs
。选择一个并坚持使用您选择的缩进。
答案 1 :(得分:1)
这应该解决它:
MAX_KEY_SIZE = 26
def getMode():
while True:
print('Do you wish to encrypt or decrypt a message?')
mode = input().lower()
if mode in 'encrypt e decrypt d'.split():
return mode
else:
print('Enter either "encrypt" or "e" or "decrypt" or "d".')
def getMessage():
print('Enter your message:')
return input()
def getKey():
key = 0
while True:
print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
key = int(input())
if (key >= 1 and key <= MAX_KEY_SIZE):
return key
def getTranslatedMessage(mode, message, key):
translated = ''
num = 0
if mode[0] == 'd':
key = -key
translated = ''
for symbol in message:
if symbol.isalpha():
num = ord(symbol)
num += key
if symbol.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
elif symbol.islower():
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
translated += chr(num)
else:
translated += symbol
return translated
mode = getMode()
message = getMessage()
key = getKey()
print('Your translated text is:')
print(getTranslatedMessage(mode, message, key))
还初始化之前使用了变量num
和translated
。我也已经修复了。
答案 2 :(得分:0)
这是一个非常普遍的问题。您需要使用4 white spaces
而不是tab
。但是请确保您保持一致,并在任何地方都遵循这种风格。同样,您可以完全使用tabs
,但不能将white spaces
与tabs
混合使用,如错误-句法Re悔的注释中所述。
答案 3 :(得分:0)
代码在制表符和空格的用法上必须保持一致。整个代码可以使用4个空格,或者整个代码可以使用tab,但不能同时使用两者。
答案 4 :(得分:0)
Python最独特的功能之一是它使用缩进来标记代码块。 if语句,循环和函数都缩进四个空格或一个制表符,这是Python的典型缩进量。
答案 5 :(得分:0)
是的,有些东西没有像最后一个return translated
那样正确缩进
我修复了它,您可以差异检查差异,当您与缩进不一致时,python不喜欢它
MAX_KEY_SIZE = 26
def getMode():
while True:
print('Do you wish to encrypt or decrypt a message?')
mode = input().lower()
if mode in 'encrypt e decrypt d'.split():
return mode
else:
print('Enter either "encrypt" or "e" or "decrypt" or "d".')
def getMessage():
print('Enter your message:')
return input()
def getKey():
key = 0
while True:
print('Enter the key number (1-%s)' % (MAX_KEY_SIZE))
key = int(input())
if (key >= 1 and key <= MAX_KEY_SIZE):
return key
def getTranslatedMessage(mode, message, key):
if mode[0] == 'd':
key = -key
translated = ''
for symbol in message:
if symbol.isalpha():
num = ord(symbol)
num += key
if symbol.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
elif symbol.islower():
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
translated += chr(num)
else:
translated += symbol
return translated
mode = getMode()
message = getMessage()
key = getKey()
print('Your translated text is:')
print(getTranslatedMessage(mode, message, key))