我是编码的新手,所以我决定为unicode编写某种用于测试目的的秘密代码,我通过在Unicode中添加数字来做到这一点,所以这是一个秘密。我一直在收到此错误,但我不知道如何解决。有什么解决办法吗?这是代码:
while True:
try:
message = int(input("Enter a message you want to be decrypt: "))
break
except ValueError:
print("Error, it must be an integer")
secret_string = ""
for char in message:
secret_string += chr(ord(char - str(742146))
print("Decrypted", secret_string)
q = input("")
答案 0 :(得分:6)
Python 的工作方式与JavaScript有所不同,例如,您要连接的值必须是 int 或 str ... < / p>
例如,下面的代码抛出错误:
print( "Alireza" + 1980)
像这样:
Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
print( "Alireza" + 1980)
TypeError: can only concatenate str (not "int") to str
要解决此问题,只需将str添加到您的数字或值中,例如:
print( "Alireza" + str(1980))
结果为:
Alireza1980
答案 1 :(得分:3)
TypeError
# the following line causes a TypeError
# test = 'Here is a test that can be run' + 15 + 'times'
# same intent with a f-string
i = 15
test = f'Here is a test that can be run {i} times'
print(test)
# output
'Here is a test that can be run 15 times'
i = 15
# t = 'test' + i # will cause a TypeError
# should be
t = f'test{i}'
print(t)
# output
'test15'
int
。dtype
i = '15'
# t = 15 + i # will cause a TypeError
# convert the string to int
t = 15 + int(i)
print(t)
# output
30
TypeError
,这就是为什么人们似乎会问这个问题的原因。TypeError
的原因是message
类型是str
。char
类型的str
添加到int
char
转换为int
secret_string
而不是0
来初始化""
。ValueError: chr() arg not in range(0x110000)
超出了7429146
的范围,因此代码也产生了chr()
。message = input("Enter a message you want to be revealed: ")
secret_string = 0
for char in message:
char = int(char)
value = char + 742146
secret_string += ord(chr(value))
print(f'\nRevealed: {secret_string}')
# Output
Enter a message you want to be revealed: 999
Revealed: 2226465
message
现在是int
类型,因此for char in message:
导致TypeError: 'int' object is not iterable
message
被转换为int
,以确保input
是int
。str()
chr
将value
转换为Unicode ord
while True:
try:
message = str(int(input("Enter a message you want to be decrypt: ")))
break
except ValueError:
print("Error, it must be an integer")
secret_string = ""
for char in message:
value = int(char) + 10000
secret_string += chr(value)
print("Decrypted", secret_string)
# output
Enter a message you want to be decrypt: 999
Decrypted ✙✙✙
Enter a message you want to be decrypt: 100
Decrypted ✑✐✐
答案 2 :(得分:1)
代替使用“ +”运算符
print(“ Alireza” + 1980)
使用逗号“,”运算符
print(“ Alireza”,1980)
答案 3 :(得分:0)
问题是您正在执行以下操作
str(chr(char + 7429146))
其中char是一个字符串。您不能使用字符串添加int。这将导致该错误
如果您想获取ascii代码并添加一个常数,则为
。如果是这样,您可以只执行ord(char)并将其添加到数字中。但同样,chr可以取0到1114112之间的值
答案 4 :(得分:0)
更改secret_string += str(chr(char + 7429146))
致secret_string += chr(ord(char) + 7429146)
ord()
将字符转换为其等效的Unicode整数。 chr()
然后将此整数转换为等效的Unicode字符。
此外,7429146的数字太大,应该小于1114111
答案 5 :(得分:0)
使用此:
print("Program for calculating sum")
numbers=[1, 2, 3, 4, 5, 6, 7, 8]
sum=0
for number in numbers:
sum += number
print("Total Sum is: %d" %sum )