Google+ Seguidores

viernes, 2 de agosto de 2013

Ejercicios resueltos en python (Parte 3)

    15

Soluciones ejercicios python
Ejercicios resueltos en python
Después de estar un tiempo sin conexión a internet y estar de mudanza, vuelvo con las soluciones a los 4 ejercicios propuestos ya hace un tiempo:  Ejercicios en python (Parte 3).. Como he dicho en otras entradas, pueden haber distintas formas de resolver los ejercicios. El ejercicio 1 fue realizado por Ramón Caraballo, dejó su solución como respuesta en la entrada anterior.

Ejercicio 1

Me ha gustado mucho la forma en que Ramón ha dado el sistema de puntos para el juego del Reino del Dragón.

#Reino del Dragon....
import random
import time

def introduccion():
print ("Estamos en una tierra llena de dragones. Delante de nuestro,")
print ("se ven dos cuevas. En una cueva, el dragon es amigable")
print ("y compartira el tesoro contigo. El otro dragon")
print ("es codicioso y hambriento, y te va a comer ni bien te vea.")
print ("")

def CambiarCueva():
cueva = ""
while cueva != "1" and cueva != "2":
print "Ha que cueva quieres entrar? 1 o 2?"
cueva = raw_input()

return cueva


newgame = ("s")
oro = 0

while newgame == ("s"):

NumdelaCueva = CambiarCueva()

print ("Te acercas a la Cueva...")
time.sleep(2)
print ("Esta oscuro y tenebroso...")
time.sleep(2)
print ("Un gran dragon salta delante tuyo, abre su boca y...")
print ("")
time.sleep(2)

FriendlyCueva = random.randint (1, 2)
print "la cueba es", FriendlyCueva

if NumdelaCueva == str(FriendlyCueva):
print ("Te entrega el tesoro...")
cofre = random.randint(50, 200)
print "Has ganado ", cofre, "en oro"
oro += cofre
else:
print ("El dragon te come de un bocado....")
print "Perdiste!!\nOro acomulado:", oro
newgame = raw_input("Quieres jugar de nuevo? (s / n)")

oro = 0

Ejercicio 2

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import random

def main():
cadena = input ("Dime la longitud de la cadena: ")
eleccion = raw_input ("Intenta adivinar la cadena: ")
print ""

aleatorio = num_aleat(cadena)
tot = evalua(cadena, aleatorio, eleccion)
print aleatorio
print ""
while eleccion != aleatorio:
print "Con el numero", eleccion, "has tenido", tot, "aciertos"
print ""
eleccion = raw_input ("Intenta adivinar la cadena: ")
tot = evalua(cadena, aleatorio, eleccion)
print ""
print "Felicitaciones, has ganado...."
raw_input()

def num_aleat(cad):
numero_aleatorio = ""
for i in range(cad):
x = random.randint(0, 9)
x = str(x)
numero_aleatorio += x
return numero_aleatorio
def evalua(cad, aleat, elecc):
cont = 0
a = 0
b = 0
for i in range(cad):
if aleat[a] == elecc[b]:
cont += 1
a += 1
b += 1
else:
a += 1
b += 1
return cont
main()

Ejercicio 3

#!/usr/bin/env python
# -*- coding: utf-8 -*-

uno = raw_input ("Dime la primera palabra: ")
print ""
dos = raw_input ("Dime la segunda palabra: ")
print ""

if len(uno) < 3 or len(dos) < 3:
print "Las palabras tienen menos de 3 letras"
print ""
elif uno[-3:] == dos[-3:]:
print "Riman"
print ""
elif uno[-2:] == dos[-2:]:
print "Riman un poco"
print ""
else:
print "No riman"
print ""

Ejercicio 4

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def main():
dolares = input ("Cuantos dolares: ")
interes = input ("Cuanto interes: ")
interes = float(interes)
anos = input ("Cantidad de años: ")
print ""

resultado = calculo (dolares, interes, anos)
print "Cuando pasen", anos, u"años, con un", interes, u"de interes, usted habrá generado", resultado, "dolares."

def calculo (dinero, inte, cant_anos):
x =dinero * ((1 + inte/100) **cant_anos)
return x

main()

No olviden dejar sus comentarios por dudas o sugerencias. Saludos


15 comentarios:
Write comentarios
  1. holaaa
    llevo semanas estudiando en esta pagina soy estudiante de ingenieria en informatica y me a ayudado mucho.
    tengo dudas sobre el ejercicio 2:
    cual es la diferencia entre input y raw_input
    y en las variables tot = evalua(cadena, aleatorio, eleccion) y aleatorio = num_aleat(cadena) no entiendo que hace lo que va dentro del parentesis

    ResponderEliminar
    Respuestas
    1. Hola, como estas? Puedes usar todo con raw_input() si quieres y luego convertir el resultado. raw_input() se utiliza cuando esperamos que el usuario ingrese caracteres y input() cuando esperamos que el usuario ingrese números.
      Igual lo puedes hacer de esta manera:
      numero = raw_input()
      y luego convertirlo si sabemos que esperamos un entero:
      numero = int(numero)
      Errar es humano y aveces por mas que pidamos un número puede que recibamos una letra (la cual arrojará error si no tenemos en cuanta estos puntos.

      Tu segunda consulta: tendrías que profundizar un poco con las funciones. Pronto subiré algún material sobre funciones para aclarar el tema.

      Saludos

      Eliminar
  2. Hola!, tengo una duda después que pongo los ejercicios en python, no se como compilarlo y ponerlo a correr! soy nuevo y me interesa muchísimo la programación en python!

    ResponderEliminar
    Respuestas
    1. Hola, estaría bueno saber en que entorno de desarrollo estas trabajando para poder ayudarte. Saludos

      Eliminar
  3. Hola, tengo una duda en el ejercicio 2, yo entiendo casi todo el código pero no comprendo a que hace referencia esta parte: if aleat[a] == elecc[b]

    Me refiero a aleat[a] y a elecc[b]

    Para que se utilizan esos corchetes?

    Gracias por la ayuda

    ResponderEliminar
    Respuestas
    1. Hola Jesus, en realidad hace mucho que hice el ejercicio y hoy en día le haría muchas modificaciones. Te explico: a = 0 y b = 0 por lo tanto lo que hace la cadena aleat[a] == elecc[b] es comparar el primer el elemento de la cadena elegida con el primer elemento del elemento aleatorio. Luego a y b suman 1 y por lo tanto se compara el siguiente elemento. No se si me explique bien, cualquier consulta me escribís. Saludos

      Eliminar
    2. Listo ya te entendi, muchas gracias por tus ejercicios me han venido muy bien para aprender a programar en python :) Saludos desde Venezuela

      Eliminar
  4. def master_mind():
    import random #llamo al modulo random
    longitud = int(raw_input("Elige cuantos digitos quieres que tenga el numero (min 1 - max 9)"))
    #le pido al usuario una longitud de la cadena y la guardo en una variable

    rango = int(raw_input("Indica el rango de cada digito de la cadena (min 1 - max 9)"))
    #le pido al usuario un rango (hasta que número quiere que llegue cada cifra)

    numero_oculto = "" #una cadena vacia donde añadire cada numero que creo al azar hasta tener la cifra que se deberá adivinar

    for i in range(longitud): #un bucle for que en cada iteracion creara un numero al azar y lo añadira al numero oculto
    numero_oculto+=str(random.randrange(1,(rango+1)))

    numero_pedido = "" #una variable vacía en la que posteriormente guardare el numero que introduzca el usuario
    intentos = 0 #un contador para los intentos
    oportunidades = 5#otro contador para las oportunidades que se irá restando cada vez que si pida un nuevo numero

    while numero_oculto != numero_pedido and oportunidades>0:
    #el bucle principal se ejecutara mientras que no se acierte el numero completo y las oportunidades restantes no lleguen a 0
    numero_pedido = raw_input("Adivina el numero oculto ("+ str(longitud)+ " cifras del 1 al " + str(rango) + ")")
    #pido un numero al usuario y lo guardo en una variable

    mostrar_aciertos = ""
    #una cadena vacia donde concatenare el propio numero si hay un acierto (me da lo mismo coger la cifra del numero pedido o del
    #creado al azar) y un '*' si no hay coincidencia

    for j in range(longitud):
    #hago un bucle para poder tener un indice [j] que me permita comparar los digitos de cada numero uno a uno
    #el rango sera 'longitud', igual al numero de digitos que especifica el usuario al principio del programa
    if numero_oculto[j] == numero_pedido[j]:
    mostrar_aciertos+=numero_oculto[j]
    #si hay una coincidencia añado ese digito a la cadena vacia que cree anteriormente
    else:
    mostrar_aciertos+="*"
    #si no hay coincidencia le añado un asterisco

    oportunidades-=1 #resto una oportunidad despues de hacer cada comprobacion

    print "%s Te quedan %d oportunidades" % (mostrar_aciertos, oportunidades)
    #muestro en pantalla la cadena con aciertos y fallos y las oportunidades restantes

    else: #si no se cumple el while es porque o se han terminado las oportunidades o porque se acerto el numero
    if oportunidades == 0:
    print "Se te acabaron las oportunidades, vuelve a intentarolo"

    else:
    print "Enhorabuena, acertaste!"



    master_mind()

    Una posible solución para el ejercicio 2. Saludos

    ResponderEliminar
    Respuestas
    1. Hola kuouz, gracias por participar en el blog. No puede revisar todos los ejercicios, pero tiene muy buena pinta. Saludos

      Eliminar
    2. De nada Diego. A lo mejor con los comentarios quedó un poco lioso, si alguien le interesa saber algo del código que no dude en preguntar. Saludos.

      Eliminar
  5. Hola Diego, Soy nueva programando y estoy en la primera asignatura. Tengo un proyecto que debo presentar en 5 dias y llevo 4 dias intentando desarrollarlo pero no he podido. El proyecto se parece al que tu desarrollastes del tesoro, solo que tiene unas cuantas diferencias. Primero solo debo usar loops (if y while) puesto que el tutor solo eso nos ha enseñado por ahora y no podemos usar funciones. Segundo el juego se desarrolla en un grid de 10x10. Tercero debemos usar las teclas 1234 o UDLR (Up,Down,Right,Left) para que el jugador se desplaze al pulsar esas teclas y solo tiene tres intentos. Durante esos intentos debe encontrar obsatuclos que son de operacion matematicas. La posicion del tesoro se encuentra una variable random. Crees poder ayudarme? POR FAVOR!!!! Necesito ayuda estoy intentando estudiar para poder encontrar un trabajo. Gracias!

    ResponderEliminar
    Respuestas
    1. Hola Jasmine, gracias por visitar el blog. Has hecho algo? estaría bueno ver la letra del problema y ver los que has intentado hacer. Saludos

      Eliminar
  6. Hola Diego,

    Esto es lo que tengo hasta el momento.



    print "WELCOME TO THE TREASURE GAME!!"
    print "\nMay I have your name please?:"
    name = raw_input("> ") # Name of the player

    print "\nWelcome to the game, " + name
    print "You have to find the treasure and...\n"
    print "you only have 3 moves.....\n"
    print "Wich one you are going to pick??"
    #print "U. up\nD. down\nR. right\nL. left."

    #answerMove = str(raw_input("> ")) # Answer of the player for the move
    banswerMove = True # Controla el game

    playerX = 0 # Position of the player in uthe line x stars at 0
    playerY = 0 # Position of the player in the line y stars at 0
    tresureX = 6 # Position of the tresure in the line x
    tresureY = 6 # Position of the tresure in the line y
    countTries = 0 # Numbers of tries to find the treasure
    numTriesLeft=3 # Variable to show how many tries leftover they have

    # While the banswerMove is true and the tries are less then 3 will keep runing
    while banswerMove and countTries < 3:

    print "U. up\nD. down\nR. right\nL. left."
    answerMove = str(raw_input("> ")) # Answer of the player for the move

    # The player move up and tries 3 times
    if answerMove == "U" or answerMove == "u" and countTries <= 3:
    playerX = playerX + 1
    countTries = countTries + 1

    # Showing the player that is moving up and how many moves leftover have
    # Finish the game if they pass the 3 times ## need to change for ask againg
    if countTries <= 2:
    print "You are moving up ", name," !!!"
    print "You have only ",numTriesLeft-countTries," more moves!!!"


    else:
    print "Game Over"
    banswerMove = False

    elif answerMove == "D" or answerMove == "d" and countTries <= 3:
    playerX = playerX + 1
    countTries = countTries + 1

    # Showing the player that is moving up and how many moves leftover have
    # Finish the game if they pass the 3 times ## need to change for ask againg
    if countTries <= 2:
    print "You are moving down ", name," !!!"
    print "You have only ",numTriesLeft-countTries," more moves!!!"

    else:
    print "Game Over"
    banswerMove = False


    if playerX == tresureX:
    print "You WON"
    # elif playerX != tresureX and countTries == 3:
    # print "GAME OVER"

    banswerMove = True

    ResponderEliminar
  7. ¡Buenas! En un ratillo he hecho los ejercicios 2 y 3, os paso como lo he hecho, el 4 no lo he hecho porque se basa en una operación de cálculo sin más dificultad.

    #EJERCICIO 2
    #Creamos la password
    def crear_password(longitud,password):
    import random
    print "Introduce la password para adivinar: "
    for i in range(longitud):
    password.append(random.randint(1,10))
    print "PASSWORD DEL JUEGO: "
    print password

    #Creamos la solucion
    def crear_solucion(longitud,solucion):
    print "Introduce la solucion para adivinar: "
    for i in range(longitud):
    elemento = input("Introduce elemento: ")
    solucion.append(elemento)
    print "SOLUCION DEL JUEGO: "
    print solucion

    #############################
    ###FUNCION PRINCIPAL###
    #############################
    def main():
    password = []
    solucion = []
    print "Por favor, introduzca la longitud de la cadena: "
    longitud = input("Longitud: ")
    if longitud >= 2 and longitud <=10:
    print "PASSWORD: "
    crear_password(longitud,password)
    print "SOLUCION: "
    print crear_solucion(longitud,solucion)
    count = 0
    a = 0
    b = 0
    for i in range(longitud):
    if password[a] == solucion [b]:
    a = a + 1
    b = b + 1
    count = count +1
    print "Numeros acertados: " , count
    else:
    print "Datos no validos"

    print main()



    ######################################################

    EJERCICIO 3
    print """EJERCICIO 3:
    Tienes que decir si una palabra rima mucho, poco o nada."""
    def rima(palabra1, palabra2):
    if palabra1[-3:]==palabra2[-3:]:
    print "Rima bastante"
    elif palabra1[-2:]==palabra2[-2:]:
    print "Rima un poco"
    else:
    print "No rima nada"

    palabra1=raw_input("Introduce la primera palabra: ")
    palabra2=raw_input("Introduce la segunda palabra: ")
    print rima(palabra1,palabra2)

    ResponderEliminar

Tu comentario es importante y nos motiva a seguir escribiendo...

Entradas más recientes

© 2014 Mi diario Python. Designed by Bloggertheme9 | Distributed By Gooyaabi Templates
Powered by Blogger.