es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Juego de escritura en Tkinter no aumentando el puntaje.

Aquí está mi código:

from tkinter import *
import random
from pathlib import Path
from typing import Text

score = 0

def handle(*args):
    global totype
    global typevar
    global score
    print(f'{typevar.get()}, {totype}')
    if typevar.get().strip() == totype:
        score += 1
        print(score)

p = Path(<strong>file</strong>).with_name('words.txt')
with p.open('r') as f:
    words = f.readlines()

tab = Tk()
tab.geometry('300x200')

typevar = StringVar()

rand = random.randint(1, len(words))

totype = words[rand]

tab.bind('<return>', handle)

type = Label(tab, text=totype).pack()
typed = Entry(tab, show = '^', textvariable = typevar).pack()

tab.mainloop()

Funciona muy bien (aparte de no darme nuevas palabras), pero no reconoce cuando escribes la palabra correcta. Cuando escribes algo, se supone que debe aumentar tu puntuación e imprimir tu puntuación actual cuando lo hagas bien. Sin embargo, incluso cuando lo escribes correctamente, no imprime nada. Sin embargo, las dos variables son iguales.
¿Cómo puedo solucionar esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema aquí está en la comparación de las dos variables typevar.get().strip() y totype. El método strip() se usa para eliminar cualquier espaciado en blanco al inicio o al final, pero también convierte la cadena en minúsculas. Por lo tanto, si la palabra totype tiene alguna letra en mayúscula, la comparación fallará aunque las dos variables sean iguales.

    Para solucionar esto, elimine el método .strip() y en su lugar, use el método lower() para convertir ambas variables en minúsculas antes de compararlas. Aquí está la función handle() actualizada:

    def handle(*args):
        global totype
        global typevar
        global score
    
        input_word = typevar.get().lower()
        correct_word = totype.lower()
    
        if input_word == correct_word:
            score += 1
            print(score)
    

    Ahora, cuando el usuario escriba la palabra correcta, se actualizará el puntaje e imprimirá en la consola.

Comments are closed.