这是我编写的代码,它可以完美运行,并且该代码的功能也只有一部分,当涉及到我询问用户是否要再次尝试的部分时(如果他们选择否,那么它就可以了)停止,这是应该发生的。另一方面,如果他们说“是”,他们将收到另一个完全相同的提示:“您想重试吗? (y / n)'。您可以说100次,什么也不会发生,我的目标是让代码从头开始返回并调用该函数。我尝试过休息一下,如果用户说“ y”来尝试退出循环等,但是它没有用,我现在不知道…
此外,如您所见,我有正确的数字,可以进行比较以查看用户猜测的数字是否在生成的列表中,而我对此没有问题。现在有了正确的位置,我不确定该怎么做,目的是要检查两个列表中的数字和位置是否都是名称。
import random
play = True
turnsleft = 1
#this is a function that is in charge of generating a random password
def generatePassword():
generatePassword = [] #create an empty list
for i in range(1,6):
generatePassword.append(random.randint(1,9))
return generatePassword
'''this is a function that prompts the userfor their guess
the input will be comprimised of 5 different variables to store
the different numbers which will then all be added to the list of user number'''
def getUserGuess():
getUserGuess = [] #create an empty list
v1,v2,v3,v4,v5 = input("Please take a guess of the password by entering 5 numbers(comma between each): ").split(",")
v1,v2,v3,v4,v5 = int(v1), int(v2), int(v3), int(v4), int(v5)
for i in(v1,v2,v3,v4,v5):
getUserGuess.append(i)
return getUserGuess
#this function will compare the cpu generated password to the user inputed numbers list
def reportResult(generatePassword,getUserGuess):
correctdigits = 0
correctlocations = 0
global turnsleft #use the play variable initiated outside the funtion
global play #use the play variable initiated outside the funtion
while play is True:
if getUserGuess == generatePassword:
print("Congradulations! You have guessed the right password.")
elif turnsleft == 0:
print("You will never guess my password! It was " +str(generatePassword()))
playagain = input("Would you like to play again? (y/n) ")
if playagain == 'n':
play = False
else:
turnsleft-= 1
for e in getUserGuess():
if e in generatePassword():
correctdigits+= 1
for e in getUserGuess():
if e in generatePassword():
correctlocations+= 1
print(str(turnsleft) +" guesses left.")
print(str(correctdigits) +" of 5 correct digits.")
print(str(correctlocations) +" of 5 correct locations.")
return reportResult
while play is True:
reportResult(generatePassword,getUserGuess)
答案 0 :(得分:1)
我相信您只需在“ turnsleft”为0时将“ turnsleft”设置为大于0的某个值即可。
例如:
elif turnsleft == 0:
print("You will never guess my password! It was " +str(generatePassword()))
turnsleft = 2 #<-- Reset turns here!
playagain = input("Would you like to play again? (y/n) ")
if playagain == 'n':
play = False
这将使您可以将转数设置为某个值来“开始新游戏”。但这也带来了新的问题。也许您应该编写一个resetGame()来编辑从头开始真正需要的所有变量。