我在做一个你破解密码的游戏。我要它可以是0000到9999之间的任何代码。我做了这个剧本。你知道吗
from random import *
from time import sleep
pin = [randint(0,9),randint(0,9),randint(0,9),randint(0,9)]
print(pin)
usrinp = int(input(''))
if int(usrinp) == pin:
print('cracked')
问题是,当我输入代码时,它不工作,因为没有输出。有没有办法把这4个数字组合成一个散列或其他什么名字?你知道吗
这是因为您正在将整数值与列表进行比较。你知道吗
这应该工作,如果你的pin码总是将是4位数字,而不是那些与前导零。你知道吗
要获得四位整数,请使用以下命令:
因此产生的代码是:
您有一个整数列表,并将其与单个整数进行比较。这不起作用有两个原因:
int()
不保留前导0
字符;int('0999')
返回999
,int('0000')
返回0
。你知道吗{,你的输入字符串可以保密。使它们都具有相同的类型,因此生成单个字符串,而不是整数列表。你知道吗
您的密码可以通过选取字符串数字生成:
然后针对该引脚测试
input()
值:注意:你也可以用
random.randint(0, 9999)
选择一个随机整数,但是这样你就很难告诉玩家他们的数字是否正确了。例如,通过生成一个字符串,您可以简单地计算它们正确的位数:你可以用两个整数来达到同样的效果,但是你必须使用数学或字符串转换来提取每个数字,并正确处理带前导零的值。一切都变得有点复杂了。你知道吗
另一种方法是将用户输入转换为单独的整数(因此保留原始生成的整数列表):
但是,除非你也打算在算术中使用数字(求和、乘法等),否则这种方法比使用字符串没有真正的优势。列表和字符串都是序列,但是生成字符串可以避免用户每次玩游戏时都顽固地输入
'Your mamma is a <censored>'
并中断int()
转换。:-)所有这些都不需要hashing;哈希在这里没有任何用处,因为您希望测试是否相等,而不是尝试将大量的潜在值减少到一组有限的选项中(例如尝试将任意值放入一个有限大小的表中,或者将大量传入连接定向到可以处理的有限数量的服务器)这些联系)。你知道吗
相关问题 更多 >
编程相关推荐