大家能帮我看看问题出在哪里吗。
import randomdef getNumber():
number = list('0123456789')
random.shuffle(number)
return number[:4]
def check(myNumber, number):
A = 0
B = 0
for i in myNumber:
if i in number:
if myNumber.index(i) == number.index(i):
A += 1
else:
B += 1
return str(A)+'A'+str(B)+'B'
def showGameRule():
print('''游戏规则(略)''')
def game():
showGameRule()
number = getNumber()
print(number)
gameOver = False
count = 0
while not gameOver:
myNumber = input('请输入四个不同的数字:')
result = check(myNumber, number)
count += 1
print(f'第{count}次:{result}')
if result == '4A0B':
print('你已经猜到了正确的结果。')
quitOrNot = input('是否继续?继续请按Y,其他键退出')
if quitOrNot not in ['Y','y']:
print('不玩了。退出游戏。')
gameOver = True
else:
print('再玩一次。')
game()
if __name__ == '__main__':
game()
编了一段小代码。简单说问题是:
1、第一次猜对数字,直接不玩了,就正常退出了。
2、第一次猜对数字后,输入"Y"再玩一次,再猜对了,再选不玩,就不能正常推出了,继续让我输入数字。不知道为什么。
游戏规则(略)
['5', '4', '7', '3']
请输入四个不同的数字:5473
第1次:4A0B
你已经猜到了正确的结果。
是否继续?继续请按Y,其他键退出y
再玩一次。
游戏规则(略)
['9', '2', '5', '4']
请输入四个不同的数字:9254
第1次:4A0B
你已经猜到了正确的结果。
是否继续?继续请按Y,其他键退出n
不玩了。退出游戏。
请输入四个不同的数字: 因为你用了递归调用,当返回上一层函数的时候 gameOver 的值还是 False,
你可以把 gameOver 设为全局变量
import random
def getNumber():
number = list('0123456789')
random.shuffle(number)
return number[:4]
def check(myNumber, number):
A = 0
B = 0
for i in myNumber:
if i in number:
if myNumber.index(i) == number.index(i):
A += 1
else:
B += 1
return str(A)+'A'+str(B)+'B'
def showGameRule():
print('''游戏规则(略)''')
def game():
global gameOver # 加了这一行
showGameRule()
number = getNumber()
print(number)
gameOver = False
count = 0
while not gameOver:
myNumber = input('请输入四个不同的数字:')
result = check(myNumber, number)
count += 1
print(f'第{count}次:{result}')
if result == '4A0B':
print('你已经猜到了正确的结果。')
quitOrNot = input('是否继续?继续请按Y,其他键退出')
if quitOrNot not in ['Y','y']:
print('不玩了。退出游戏。')
gameOver = True
else:
print('再玩一次。')
game()
if __name__ == '__main__':
game()
isdkz 发表于 2023-3-6 11:31
因为你用了递归调用,当返回上一层函数的时候 gameOver 的值还是 False,
你可以把 gameOver 设为全局变 ...
感谢!问题已解决。
我也觉得肯定跟我调用game()有关系。
但是一直没有想明白,我想的是调用game(),gameOver不就重置为False了吗。
现在明白了,原来递归调用的时候也是像循环一样,有内层、外层的。
谢谢!
页:
[1]