我有一个小代码,它接受用户输入并加密。这不是一个哈希公式,但它只是一个简单的谜代码。简化的代码是:
def Hash (string):
for x in range(0, len(string)):
if x == 0:
HashC = str(ord(string[x:x+1]))
else:
HashC = HashC+str(ord(string[x:x+1]))
print(HashC)
U = HashC
U = input("What do you want to hash? ")
Hash(U)
print(U)
打印的输出告诉我转换过程中发生了什么
> What do you want to hash? Test
> 84101
> 84101115
> 84101115116
> Test
我想要它输出什么
> What do you want to hash? Test
> 84101
> 84101115
> 84101115116
> 84101115116
因为我希望代码将字符串更改为“加密的”代码
变量
U
的作用域位于函数之外。在函数块中赋值U = HashC
时,该块将其赋值给U
,但在本例测试中,当函数块退出时,U
恢复为其值input()
。这与C中的传递值类似,只有在这里U
对函数块可见,而没有显式地传递给它。此外,您必须将该值存储在U
中,因为字符串是不可变的,尽管您没有对string
进行更改因此,您应该执行以下操作:
Hash
中的U
是局部变量,而不是全局变量在上面加上
global U
U = HashC
可以解决这个问题但是最好不要修改全局变量,因为它会产生副作用,并且常常会导致某种错误。所以在
Hash
和U = Hash(U)
中返回HashC
相关问题 更多 >
编程相关推荐