Skip to content
Advertisement

Problem: While loop won’t re-run the program properly

user_input = input('Welcome to the Scribble Scorer; Enter Word:')

i = {'e': 1, 't': 1.5, 'a': 2, 'i': 2, 'n': 2, 's': 2, 'h': 2.5, 'r': 2.5, 'd': 2.5, 'l': 3, 'u': 3, 'c': 3.5, 'm': 3.5, 'f': 4, 'w': 4.5, 'y': 4.5, 'p': 5, 'g': 5, 'b': 5.5, 'v': 5.5, 'k': 5.5, 'q': 5.5, 'j': 6, 'x': 6, 'z':6}

totalValue = 0
    for char in user_input: # For every character in our string.
        if char in i: # If this character has a defined weight value.
            totalValue += i[char] # Add it to our total.

print('Word:', user_input, 'Score:', totalValue)


while user_input != 'nothing':
    user_input = input('Welcome to the Scribble Scorer; Enter Word:')

    if user_input != 'nothing':
    
        print('Word:', user_input, 'Score:', totalValue)

Result:

Welcome to the Scribble Scorer; Enter Word: fazli
Word: fazli Score: 17
Welcome to the Scribble Scorer; Enter Word: mia
Word: mia Score: 17
Welcome to the Scribble Scorer; Enter Word:

Currently, my program will print a score depending on what the user enters. After the first input, ‘fazli’ the score was 17.

My while loop is supposed to keep running until the user enters nothing.

The problem is my while loop I believe. It won’t make a new score, it only copies the first one.

How can I keep running my while loop without it copying the first entered word score?

Advertisement

Answer

because you don’t update the score in the while loop. you have to recalculate it with each iteration. I changed it for you.

i = {'e': 1, 't': 1.5, 'a': 2, 'i': 2, 'n': 2, 's': 2, 'h': 2.5, 'r': 2.5, 'd': 2.5, 'l': 3, 'u': 3, 'c': 3.5, 'm': 3.5, 'f': 4, 'w': 4.5, 'y': 4.5, 'p': 5, 'g': 5, 'b': 5.5, 'v': 5.5, 'k': 5.5, 'q': 5.5, 'j': 6, 'x': 6, 'z':6}
user_input = input('Welcome to the Scribble Scorer; Enter Word:')
while user_input != 'nothing':
    totalValue = 0
    for char in user_input: # For every character in our string.
        if char in i: # If this character has a defined weight value.
            totalValue += i[char] # Add it to our total.
    print('Word:', user_input, 'Score:', totalValue)
    user_input = input('Welcome to the Scribble Scorer; Enter Word:')
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement