gpt4 book ai didi

Python 中整数列表与字符串结果的不同之处

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:16 25 4
gpt4 key购买 nike

当我偶然发现一个错误时,我试图创建一个反向栅栏密码!这是我的代码:

n=len(cipher)
strings=[]
for r in range(3,4):
lis=[[0 for i in range(n)] for i in range(r)]
x,y=0,0
for c in cipher:
try:
lis[x][y]=c
except:
for i in lis:
print(i)
print(x,y)
break
y+=2*r-3
print(y)
if y>=n:
y-=n
x+=1
print(x,y)
x,y,z=0,0,1
s=""
for i in range(n):
try:
if(lis[x][y]==0):
print(r,n)
s+=lis[x][y]
except:
for i in lis:
print(i)
print(x,y,c)
break
y+=1
if x==0:
z=1
elif x==r-1:
z=0
if z==1:
x+=1
else:
x-=1
strings.append(s)
return strings

我添加了几个 try/except 语句来确定错误。但后来,我发现如果我将一行(第 4 行)更改为

lis=[['.' for i in range(n)] for i in range(r)]

代码运行完美(没有产生任何错误 - 它仍然没有产生正确的结果)!

代码之间的唯一区别是这一行。我在 Windows 10 上使用 Python 37。

为什么一个代码可以工作而另一个却不能?

编辑:我的输入密码是“Js s!ae saeoemiwm”,它是使用栅栏密码中的三个“轨道”进行编码的。

编辑2:我有一个可以反转此密码的工作版本,但这个问题的重点是为什么将0更改为“。”有什么不同吗?

最佳答案

原因是这一行:

s+=lis[x][y]

s 是一个字符串,因此您只能将其他字符串连接到它。如果 lis[x][y] 包含 0,则这是一个数字,而不是字符串,因此您无法连接它。

如果将其更改为:

s += str(lis[x][y])

然后它将使用任一初始值。

关于Python 中整数列表与字符串结果的不同之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53165404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com