Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何解决TypeError:只能将str(而不是“int”连接到str 我决定用Unicode做一些测试用的密码 我通过在Unicode中添加数字来做到这一点,所以这将是一种秘密 我一直在犯这个错误,但我不知道如何解决它。 有什么解决办法吗 原始代码 message=input(“输入要显示的消息:”) secret_string=“” 对于消息中的字符: secret_string+=str(chr(char+7429146)) 打印(“显示”,秘密字符串) q=输入(“”) 原始误差_Python_Unicode - Fatal编程技术网

Python 如何解决TypeError:只能将str(而不是“int”连接到str 我决定用Unicode做一些测试用的密码 我通过在Unicode中添加数字来做到这一点,所以这将是一种秘密 我一直在犯这个错误,但我不知道如何解决它。 有什么解决办法吗 原始代码 message=input(“输入要显示的消息:”) secret_string=“” 对于消息中的字符: secret_string+=str(chr(char+7429146)) 打印(“显示”,秘密字符串) q=输入(“”) 原始误差

Python 如何解决TypeError:只能将str(而不是“int”连接到str 我决定用Unicode做一些测试用的密码 我通过在Unicode中添加数字来做到这一点,所以这将是一种秘密 我一直在犯这个错误,但我不知道如何解决它。 有什么解决办法吗 原始代码 message=input(“输入要显示的消息:”) secret_string=“” 对于消息中的字符: secret_string+=str(chr(char+7429146)) 打印(“显示”,秘密字符串) q=输入(“”) 原始误差,python,unicode,Python,Unicode,问题是您正在执行以下操作 str(chr(char + 7429146)) 其中char是一个字符串。不能用字符串添加int。这将导致该错误 如果您想获取ascii码并将其与一个常量相加,则可能需要。如果是这样,您只需执行ord(char)并将其添加到一个数字中即可。但是,chr可以取0到1114112之间的值Changesecret\u string+=str(chr(char+7429146)) Tosecret\u string+=chr(ord(char)+7429146) ord()

问题是您正在执行以下操作

str(chr(char + 7429146))
其中char是一个字符串。不能用字符串添加int。这将导致该错误


如果您想获取ascii码并将其与一个常量相加,则可能需要。如果是这样,您只需执行ord(char)并将其添加到一个数字中即可。但是,chr可以取0到1114112之间的值

Change
secret\u string+=str(chr(char+7429146))

To
secret\u string+=chr(ord(char)+7429146)

ord()
将字符转换为等效的Unicode整数
chr()
然后将该整数转换为其等效的Unicode字符


另外,7429146是一个太大的数字,它应该小于1114111。Python的工作方式与JavaScript有点不同。例如,您连接的值需要是相同的类型,包括intstr

例如,下面的代码抛出一个错误:

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
结果如下:

Alireza1980
而不是使用“+”运算符

print(“Alireza”+1980)
使用逗号“,”运算符

print(“Alireza”,1980年)
使用以下方法:

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 )
使用f字符串解决
类型错误
#下一行导致类型错误
#test='这是一个可以运行'+15+'次的测试'
#与f字符串具有相同的意图
i=15
test=f'这是一个可以运行{i}次的测试'
打印(测试)
#输出
“这是一个可以运行15次的测试”
  • 问题可能是试图对变量为数值字符串的表达式求值
  • 将字符串转换为
    int
  • 此场景特定于此问题
  • 迭代时,注意
    dtype
i='15'
#t=15+i将导致类型错误
#将字符串转换为int
t=15+int(i)
打印(t)
#输出
30
  • 答案的前一部分解决了问题标题中显示的
    TypeError
    ,这就是为什么人们似乎要问这个问题
  • 但是,这并不能解决与OP提供的示例相关的问题,下面将讨论该示例
原始代码问题
  • 类型错误
    是由于
    消息
    类型是
    str
    引起的
  • 代码迭代每个字符,并尝试将
    char
    (一种
    str
    类型)添加到
    int
  • 通过将
    char
    转换为
    int
  • 在显示代码时,
    secret\u字符串
    需要用
    0
    而不是
    初始化
  • 代码还会导致
    ValueError:chr()arg不在范围内(0x110000)
    ,因为
    7429146
    超出了
    chr()的范围
  • 通过使用较小的数字来解决
  • 输出不是预期的字符串,这导致问题中的更新代码
message=input(“输入要显示的消息:”)
机密字符串=0
对于消息中的字符:
char=int(char)
值=字符+742146
机密字符串+=ord(chr(值))
打印(f'\n公开:{secret\u string}')
#输出
输入要显示的消息:999
公开电话:2226465
更新的代码问题
  • message
    现在是
    int
    类型,因此
    对于message中的char:
    会导致
    TypeError:“int”对象不可编辑
  • 消息
    转换为
    int
    ,以确保
    输入
    int
  • 使用
    str()
  • 仅将
    转换为Unicode
  • 不要使用
为True时:
尝试:
message=str(int(输入(“输入要解密的消息:”))
打破
除值错误外:
打印(“错误,必须是整数”)
secret_string=“”
对于消息中的字符:
值=整数(字符)+10000
secret_string+=chr(值)
打印(“解密”,机密字符串)
#输出
输入要解密的消息:999
解密✙✙✙
输入要解密的消息:100
解密✑✐✐

char+7429146
是什么意思?将
char+7429146
更改为
char+str(7429146)
。你不能连接字符串和INT,因为行
secret\u string+=str(chr(char+7429146))
你必须强制转换该整数才能连接到char变量:
secret\u string+=str(chr(char+str(7429146))
@InAFlash我的答案不同,因为我删除了
str()
从外部添加一个
ord()
内部
print(“Alireza”,1980)
输出
Alireza 1980
,中间有一个额外的空格。为了避免额外的空格,可以覆盖
sep
参数的默认值:
print(“Alireza,1980,sep=”)
这只适用于
打印
,因为打印时需要无限数量的参数。在尝试将字符串与整数串联的一般情况下,它不起作用。
Alireza1980
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 )
i = 15
# t = 'test' + i  # will cause a TypeError

# should be
t = f'test{i}'

print(t)

# output
'test15'