我试图在python中实现Donald Knuth的算法,用于在不超过5个动作中进行密码破解.我已经多次检查了我的代码,它似乎遵循算法,如下所述:http: //en.wikipedia.org/wiki/Mastermind_(board_game)#Five-guess_algorithm
但是,我知道一些秘密需要7甚至8个动作来完成.这是代码:
#returns how many bulls and cows there are
def HowManyBc(guess,secret):
invalid=max(guess)+1
bulls=0
cows=0
r=0
while r<4:
if guess[r]==secret[r]:
bulls=bulls+1
secret[r]=invalid
guess[r]=invalid
r=r+1
r=0
while r<4:
p=0
while p<4:
if guess[r]==secret[p] and guess[r]!=invalid:
cows=cows+1
secret[p]=invalid
break
p=p+1
r=r+1
return [bulls,cows]
# sends every BC to its index in HMList
def Adjustment(BC1):
if BC1==[0,0]:
return 0
elif BC1==[0,1]:
return 1
elif BC1==[0,2]:
return 2
elif BC1==[0,3]:
return 3
elif BC1==[0,4]:
return 4
elif BC1==[1,0]:
return 5 …Run Code Online (Sandbox Code Playgroud) 运行以下代码时:
try:
key=int(input())
except ValueError as string:
print("Error is within:",string)
Run Code Online (Sandbox Code Playgroud)
例如,如果一个放'rrr',这个异常会上升,因为'rrr'不支持(int)
但是,不是把实际的字符串放在一起,而是:"对于基数为10的int()的无效文字:'rrr'"
如何让它工作,以便变量'string'实际上得到用户给出的错误输入(在这个例子中,我希望它打印:'错误在:rrr')
非常感谢