elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Ejercicios
| | | |-+  ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ayuda  (Leído 2,488 veces)
wolfblood

Desconectado Desconectado

Mensajes: 7


Ver Perfil
ayuda
« en: 30 Septiembre 2022, 08:44 am »

ayuda no se donde esta el error no quiero la solucion sino que me expliquen porque no me suma los puntos del diccionario en python por favor he buscado material pero no logro solucionarlo ojala me ayuden por favor con esta tarea:

¡Juguemos Scrabble!
Construir un diccionario con los siguientes valores. Luego, el usuario ingresa una palabra por pantalla, y el programa devuelve el puntaje.
Diccionario
1=A, E, I, L, N, O, R, S, T, U
2=D G
3=B C M P
4=F H V W Y
5=K
8=J X
10=Q Z

aqui dejo el codigo

diccionario = {"A":1, "E":1, "I":1, "O":1, "L":1, "N":1, "R":1, "S":1, "T":1, "U":1,
               "D":2, "G":2,
               "B":3, "C":3, "M":3, "P":3,
               "F":4, "H":4, "V":4, "W":4, "Y":4,
               "K":5,
               "J":8, "X":8,
               "Q":10,"Z":10}  # aqui definimos el diccionario colocando el puntaje de cada letra
palabra = str(input("ingresa una palabra: "))
puntos = 0
for letra in palabra.upper():
    if letra not in diccionario:
        print("el caracter ingresado no es valido")
for letra in diccionario.values():

    print(letra)

for letra in palabra.upper():
    puntos = puntos + diccionario[letra]
    print("puntos" )
    print(puntos)


En línea

reymosquito

Desconectado Desconectado

Mensajes: 81


Ver Perfil
Re: ayuda
« Respuesta #1 en: 30 Septiembre 2022, 10:46 am »

es muy dificil ayudarte sin reescribir el código, porque el error parece de lógica y no de sintaxis en si.
Código
  1. #-*- coding:utf-8 -*-
  2. diccionario = {"A":1, "E":1, "I":1, "O":1, "L":1, "N":1, "R":1, "S":1, "T":1, "U":1,
  3.               "D":2, "G":2,
  4.               "B":3, "C":3, "M":3, "P":3,
  5.               "F":4, "H":4, "V":4, "W":4, "Y":4,
  6.               "K":5,
  7.               "J":8, "X":8,
  8.               "Q":10,"Z":10}  # aqui definimos el diccionario colocando el puntaje de cada letra
el diccionario está bien declarado

Código
  1. palabra = input("ingresa una palabra: ")

si te fijas la función str() está de más, no es que este mal pero es una redundancia, input devuelve una cadena

Código
  1. puntosTotales = 0
  2. for letra in palabra.upper():
  3.    if letra not in diccionario:
  4.        print("el caracter ingresado no es válido")
  5.    else:
  6.        parciales = diccionario.get(letra)
  7.        print(f"puntos por la letra {letra}:  {parciales}")
  8.  
  9.        puntosTotales+=parciales
  10.  
  11. print(f"puntos totales por la palabra: {puntosTotales}")

Bueno acá ya tuve que cambiar la lógica, demasiados for , con una iteración sobra
si el caracter no está muestra el mensaje pero si está hay que obtener el valor de la letra para eso existe el método get, una vez obtenido el valor parcial lo muestro o no eso depende de lo que quieras y pot último lo sumo al valor total.



En línea

wolfblood

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: ayuda
« Respuesta #2 en: 30 Septiembre 2022, 17:22 pm »

gracias amigo reymosquito por tu ayuda
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines