我想用 Python 做一个石头剪刀布游戏,没什么复杂的。玩家以 2 分开始,根据他是赢还是输,增加或减少价值。问题是它没有保存在我首先声明的变量中,所以即使它达到0点,while继续执行。
from random import randint
pi = "Piedra"
pa = "Papel"
ti = "Tijera"
puntos = 2
while puntos > 0:
elemento = input("¿Piedra, papel o tijera? : ")
maquina = randint(0,2)
def piedra(puntos):
if elemento.lower() == "piedra" and maquina == 0:
print ("Empate, la maquina eligio ", pi , " ! ")
elif elemento.lower() == "piedra" and maquina == 1:
print ("Perdiste, la maquina eligio ", pa, " ! ")
puntos -= 2
print ("Tienes " , puntos , " puntos.")
elif elemento.lower() == "piedra" and maquina == 2:
print ("Ganaste, la maquina eligio ", ti, " ! ")
puntos += 2
print ("Tienes " , puntos , " puntos.")
def papel(puntos):
if elemento.lower() == "papel" and maquina == 0:
print ("Ganaste, la maquina eligio ", pi, " ! ")
print ("Tienes " , puntos , " puntos.")
puntos += 2
elif elemento.lower() == "papel" and maquina == 1:
print ("Empate, la maquina eligio ", pa, " ! ")
elif elemento.lower() == "papel" and maquina == 2:
print ("Perdiste, , la maquina eligio " , ti, " ! ")
puntos -= 2
print ("Tienes " , puntos , " puntos.")
def tijera(puntos):
if elemento.lower() == "tijera" and maquina == 0:
print ("Perdiste, la maquina eligio " , pi, " ! ")
puntos -= 2
print ("Tienes " , puntos , " puntos.")
elif elemento.lower() == "tijera" and maquina == 1:
print ("Ganaste, la maquina eligio " , pa, " ! ")
print ("Tienes " , puntos , " puntos.")
puntos += 2
elif elemento.lower() == "tijera" and maquina == 2:
print ("Empate, la maquina eligio " , ti, " ! ")
piedra(puntos)
papel(puntos)
tijera(puntos)
每个函数接收的变量是值的副本,因此您不会在本地范围之外修改变量。如果你想修改外部的,你可能不想把它作为参数传递“点”,你应该在每个函数的开头使用:
看看它是否适合你:)