我继续在我的代码中出现此错误并且不确定如何修复它,我尝试将key和num转换为整数以尝试修复它但它不起作用。 感谢
代码:
m = "hi"
key = input("What is the key: ")
while len(key) < 0:
print("Please enter a key")
key = input("What is the key: ")
key=int(key)
print (key, m)
def encrypt(m, key):
translated=''
for symbol in m:
if symbol.isalpha():
num = ord(symbol)
print (num)
num = num+ key
print(encrypt(m, key))
当我运行代码时,我得到了这个:
What is the key: 3
3 hi
104
Traceback (most recent call last):
File "C:/Users/anon/Documents/test2.py", line 17, in <module>
print(encrypt(m, key))
File "C:/Users/anon/Documents/test2.py", line 16, in encrypt
num = num+ key
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
答案 0 :(得分:0)
查看代码的这一部分:
key = input("What is the key: ")
while len(key) < 0:
print("Please enter a key")
key = input("What is the key: ")
key=int(key)
如果key
小于0
,则while
循环将运行,key
将转换为int
。
但如果key
不小于0
,则会跳过while循环。 key=int(key)
将无法运行,因此key
仍为str
。
你不能做str() + int()
之类的事情。如果你这样做,那么Python会引发你所拥有的TypeError
,因为它们是不同的类型。所以Python并不了解你在做什么。我想你知道的。
顺便说一下,如果用户没有输入数字(例如,一个单词),那么int()
函数将会引发ValueError: invalid literal for int() with base 10
。
所以最好的方法是使用try...except
来捕获此错误并告诉用户输入这样的数字:
while True:
try:
key = int(input("What is the key: "))
break # if 'int' raise an error, `break` will not run so the loop will not break.
except ValueError:
print('please enter a key')