Ayuda por favor

Hola, soy bauti, necesito ayuda. Recien estoy dando mis primeros pasos en python. Tengo que hacer un 7 y medio. El juego ese parecido al blackjack. Pero no puedo hacer que funcione. Tampoco que pierda 10 monedas al comienzo y si gana se le suma 20. No se que estoy haciendo mal… Si me pueden ayudar se los agradezco.

#Biblioteca
import random


#Variables
baraja = [1, 2, 3, 4, 5, 6, 7, 10, 11, 12] * 4
estrellas = 100

def Repartir(baraja):
    mano = []
    for i in range(2):
	    random.shuffle(baraja)
	    carta = baraja.pop() 
	    mano.append(carta)
    return mano

def monedas(Thor_mano, banca_mano, estrellas):
	for sumar in estrellas:
		if sumar == Thor_mano:
			estrellas +20
		elif sumar == banca_mano:
			estrellas -10
		else: print("No perdes monedas.")
		 	

def play_again():
    again = input("Queres Perder de nuevo Thor ? (S/N) : ").lower()
    if again == "s":
	    banca_mano = []
	    Thor_mano = []
	    baraja = [1, 2, 3, 4, 5, 6, 7, 10, 11, 12] * 4
	    Juego()
    else:
	    print("Chau Thor anda a ver netflix.. ")
	    exit()


def total(mano):
    total = 0
    for carta in mano:
        if carta == "10" or carta == "11" or carta == "12":
            total+= 0.5
        else: total += carta
    return total

def Dame(mano):
    carta = baraja.pop()
    if carta == 0.5:carta = "8"
    if carta == 0.5:carta = "9"
    if carta == 0.5:carta = "10"
    mano.append(carta)
    return mano


def mostrar_resultados(banca_mano, Thor_mano):
	
	print ("La banca tiene  " + str(banca_mano) + " con un total de " + str(total(banca_mano)))
	print ("Thor vos tenes " + str(Thor_mano) + " con un total de " + str(total(Thor_mano)))
	

def siete_y_un_cachito(banca_mano, Thor_mano):
	if total(Thor_mano) == 7.5:
		mostrar_resultados(banca_mano, Thor_mano)
		print("Felicitaciones Thor! Ganaste, ahora te podes comprar un rayo !\n")
		monedas(Thor_mano)
		play_again()
	elif total(banca_mano) == 7.5:
		mostrar_resultados(banca_mano, Thor_mano)		
		print ("Perdón Thor, anda a jugar con Hulk, capaz a el le ganas en algo.\n")
		play_again()

def score(banca_mano, Thor_mano,):
	if total(Thor_mano) == 7.5:
		mostrar_resultados(banca_mano, Thor_mano)
		print("Felicitaciones Thor! Ganaste, ahora te podes comprar un rayo !\n")
		monedas(Thor_mano) 
	elif total(banca_mano) == 7.5:
		mostrar_resultados(banca_mano, Thor_mano)		
		print ("Perdón Thor, anda a jugar con Hulk, capaz a el le ganas en algo.\n")
	elif total(Thor_mano) > 7.5:
		mostrar_resultados(banca_mano, Thor_mano)
		print ("Que ambisioso Thor. Te pasaste. Perdiste.\n")
	elif total(banca_mano) > 7.5:
		mostrar_resultados(banca_mano, Thor_mano)			   
		print ("La banca se pasó, Ganaste THOR!\n")
		monedas(Thor_mano) 
	elif total(Thor_mano) < total(banca_mano):
		mostrar_resultados(banca_mano, Thor_mano)
		print("Perdon Thor, Tus cartas son malisimas, vos perdes.\n")
	elif total(Thor_mano) > total(banca_mano):
		mostrar_resultados(banca_mano, Thor_mano)			   
		print ("VAMOS THOR, tus cartas son BUENARDAS, Vos Ganas.\n")
		monedas(Thor_mano) 	

def Juego():
	opción = 0
	print ("BIENVENIDO THOR AL 7 y UN CACHITO \n")
	
	while estrellas !=0 and estrellas <500:
		banca_mano = Repartir(baraja)
		Thor_mano = Repartir(baraja)
		sumar = monedas(banca_mano)
		print ("La banca tiene " + str(banca_mano[0]))
		print ("Thor vos tenes" + str(Thor_mano) + " con un total de " + str(total(Thor_mano)))
		siete_y_un_cachito(banca_mano, Thor_mano)
		print("Tienes un total de "+ monedas(sumar))
		while opción != "s":
			opción = input("Que queres hacer [D]ame, [Q]uedo, o [S]alir: ").lower()
			if opción == "d":
				Dame(Thor_mano)
				while total(banca_mano) < 5:
					Dame(banca_mano)
					score(banca_mano, Thor_mano)
					play_again()
			elif opción == "q":
				while total(banca_mano) < 5:
					Dame(banca_mano)
					score(banca_mano, Thor_mano)
					play_again()
			elif opción == "s":
				print ("Chau Thor, ya van a venir tiempos mejores. Mejor anda a practicar con el martillo..")
				exit()
			
		
	
if __name__ == "__main__":
    Juego()

Hola Bauti :wave:

Antes que nada te felicito por meterte en el mundo de la programación.

Sobre tu consulta,

  • Qué error estás obteniendo? Siempre que tengas un error compartilo, es muy útil.
  • Yo veo que acá, sumar = monedas(banca_mano) le estás pasando sólo banca_mano y esa función necesita también Thor_mano y estrellas
  • Qué necesitas que haga la función monedas? Podrías renombrarla para que sea más descriptiva
2 Me gusta

Hola rich, gracias por la felicitacion.
Claro, lo que quiero que haga la funcion “monedas” es basicamente que en cada partida jugada le reste 10 monedas y si gana, se le sume 20 monedas. Pero no entiendo como hacerlo. y me frustre :upside_down_face:
sobre la consulta este es mi error:

Jaja está bien, a todos nos pasa.

El error específicamente significa que querés iterar un valor que es un int (un número), y los ints no son iterables.

def monedas(Thor_mano, banca_mano, estrellas):
	for sumar in estrellas: # estrellas es un int, no se puede iterar con un for
		if sumar == Thor_mano:
			estrellas +20
		elif sumar == banca_mano:
			estrellas -10
		else: print("No perdes monedas.")

Además veo es que estás intentando usar la variable sumar pero esa variable no existe dentro de la función.

  • Qué valor tiene la variable sumar?
  • Cómo sabes si le tenes que sumar 20 estrellas o restar 10? Cuál es la condición que se tiene que dar?

Claro ahora entiendo mas o menos. la condicion seria si gana el juego thor se le sumaria 20. Y cada vez que quiere jugar de nuevo pierde 10. Intente ponerlo en una def de score. Pero para que pierda 10 no puedo. No entiendo que hacer, siento que esta todo mal ajajaj

La idea de la variable (sumar) seria que como dije arriba, que cada vez que gane se le sume a 20 a estrellas. que empieza con 100. No se si te constesto, pero esa seria la idea de sumar.

Ahora entiendo un poco más. :ok_hand:

Lo que veo es que se reparten las barajas y después se ejecuta la función monedas que tiene los checks para sumar o restar estrellas.
El problema es que todavía no jugaste entonces cómo sabes quién ganó?

while estrellas !=0 and estrellas <500:
	banca_mano = Repartir(baraja)
	Thor_mano = Repartir(baraja)
	sumar = monedas(banca_mano)

Otro problema es que tu función monedas no devuelve nada (no tiene return) entonces escribir
sumar = monedas(x) no va a guardar nada en la variable sumar.

Fijate que para sumarle o restarle un número a una variable podes usar += o -=. Acá hay algunos ejemplos.


Punto aparte, si sentís que no terminas de entender lo que estás haciendo te recomiendo leer el tutorial de Python, al menos hasta la parte 5 de estructuras de datos.