【发布时间】:2020-10-29 16:07:51
【问题描述】:
我似乎找不到此代码的错误。我一直把它作为我的输出日志。
STDERR
Traceback (most recent call last):
File "main.py", line 18, in <module>
static ("Avoid success at all costs!")
File "main.py", line 10, in static
test.assert_equals(rot13(d),sol(d))
File "/home/codewarrior/solution.py", line 16, in rot13
newkey = (get_keyA(i)+13)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
这段代码的目的是激活Rot13,如果里面有数字或空格,它将保持原样。
ABC = {1: "A", 2: "B", 3:"C", 4: "D", 5: "E", 6: "F", 7: "G", 8: "H", 9: "I", 10: "J", 11: "K",
12: "L", 13: "M", 14: "N", 15: "O", 16: "P", 17: "Q", 18: "R", 19: "S",
20: "T", 21: "U", 22: "V", 23: "W", 24: "X", 25: "Y", 26: "Z"}
abc = {1: "a", 2: "b", 3:"c", 4: "d", 5: "e", 6: "f", 7: "g", 8: "h", 9: "i", 10: "j", 11: "k",
12: "l", 13: "m", 14: "n", 15: "o", 16: "p", 17: "q", 18: "r", 19: "s",
20: "t", 21: "u", 22: "v", 23: "w", 24: "x", 25: "y", 26: "z"}
def rot13(message):
string = list(message)
new = ""
for i in string:
if (i.isnumeric() == False):
if (i != " "):
if (i.islower() == False):
newkey = (get_keyA(i)+13)
if (newkey > 26):
newkey -= 26
new += ABC[newkey]
if (i.islower() == True):
newkey = (get_keya(i)+13)
if (newkey > 26):
newkey -= 26
new += abc[newkey]
else:
new += i
else :
new += i
return new
def get_keyA(val):
for key, value in ABC.items():
if val == value:
return key
def get_keya(val):
for key, value in abc.items():
if val == value:
return key
是的,我没有使用编码。我想在不使用它的情况下尝试一下。感谢您的阅读并感谢您的帮助!
【问题讨论】:
-
第 16 行的函数 get_keyA() 似乎返回 None
标签: python dictionary typeerror