你好,我想让2人猜数字游戏,但我不知道如何显示获胜消息有人可以帮助吗?
guessp1 = int(input(player1 + "'s turn = "))
if guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)
guessp2 = int(input(player2 + "'s turn = "))
if guessp2 > answer:
print(player2,"has to guess lower!")
time.sleep(2)
else:
print(player2,"has to guess higher!")
time.sleep(2)
guessp1 = int(input(player1 + "'s turn = "))
while guessp1 & guessp2 != answer:
if guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)
guessp2 = int(input(player2 + "'s turn = "))
if guessp2 > answer:
print(player2,"has to guess lower!")
time.sleep(2)
else:
print(player2,"has to guess higher!")
time.sleep(2)
guessp1 = int(input(player1 + "'s turn = "))
总是第一个玩家赢。
如果你想保留你所拥有的,因为你写了它并理解它,只需将所有的If和else更改为:
if guessp1 == answer:
print("You win")
quit()
elif guessp1 > answer:
print(player1,"has to guess lower!")
time.sleep(2)
else:
print(player1,"has to guess higher!")
time.sleep(2)
您也可以将while循环更改为'guessp1或guessp2'而不是'guessp1和guessp2'。好运!
这一切都可以做得更简单,如果你学会如何编写自己的函数,以摆脱重复的代码。这里我创建了一个函数,它接受当前玩家的名字和答案,在函数中我请求输入并检查答案。如果正确,则从函数返回True
,否则返回False
。然后在函数外检查是否找到赢家,并在每一步交换players
import time
import random
def make_turn_and_check(current_player, answer):
time.sleep(2)
guess = int(input(current_player + "'s turn = "))
if guess > answer:
print(current_player, "has to guess lower!")
elif guess < answer:
print(current_player, "has to guess higher!")
else:
return True # winner!
return False # not winner
answer = random.randint(1,100)
current_player, next_player = 'Bob', 'Alice'
while True:
# make next player current, and current player next
current_player, next_player = next_player, current_player
if make_turn_and_check(current_player, answer):
break # winner found
print('The winner is', current_player)
评论:
while True:
意味着无限循环,它不会停止循环,直到你执行break
。
语法a, b = b, a
表示同时赋值a = b
和b = a
,但如果是2行,例如:
a = 'Alice'
b = 'Bob'
a = b
b = a
则结果将是错误的,因为a
在第一行已经被赋值给Bob
,所以在第二行之后,a
和b
都将是Bob
。使用语法a, b = b, a
,值将被交换,b
将是Alice
,a
将是Bob
。
在我的代码中,我使用它将当前玩家从下一个玩家中分离出来,并将当前玩家分配给下一个玩家。
最后一行
if make_turn_and_check(current_player, answer):
break
调用上面的函数,因为如果找到获胜者,函数返回True
,那么在if
语句中,我们可以执行break
行,结束游戏。否则,我们跳过break
,进入循环的下一次迭代。
为了更好地理解,您可以将函数产生的True
/False
值赋给一个中间变量:
is_current_winner = make_turn_and_check(current_player, answer)
if is_current_winner:
break
is_current_winner
将是包含True
或False
的布尔变量