Bottom Page

• 3 Vote(s) - 2 Average
• 1
• 2
• 3
• 4
• 5
 while not terminating gitiya Programmer named Tim Posts: 5 Threads: 2 Joined: Sep 2018 Reputation: 0 Likes received: 0 #1 Jan-13-2019, 02:09 AM (This post was last modified: Jan-13-2019, 02:35 AM by gitiya.) hi, I was writing a code on bulls and cows game and although it is working for most part, the last while loop has issues, when the correct guess is made the loop raises an error instead of terminating, anyone who can help me point out what the issue is? ```'''this game matches the user input with a random 4 digits number, The game works like this: Randomly generate a 4-digit number. Ask the user to guess a 4-digit number. For every digit that the user guessed correctly in the correct place, they have a “cow”. For every digit the user guessed correctly in the wrong place is a “bull.” Every time the user makes a guess, tell them how many “cows” and “bulls” they have. Once the user guesses the correct number, the game is over. ''' def user(): user_input=(input('enter a 4 digit number: ')) return user_input import random random_number = str(random.randint(1000,9999)) def logic(user_input): if len(user_input) != 4: print('please enter a 4 digits number: ') user_input=user() else: pass while random_number != user_input: count=0 cows=0 bulls=0 for i in user_input: if random_number[count]==user_input[count]: cows+=1 count+=1 elif i in random_number: bulls+=1 count+=1 else: count+=1 print(random_number) return cows,bulls if __name__=='__main__': cows, bulls = logic(user()) while cows!=4: print(cows, ' cows and ', bulls, ' bulls') cows, bulls = logic(user()) print(cows, ' cows and ', bulls, ' bulls') print(' you guessed right, the number is ', random_number) ``` got it right, thw double while loops where repetitive and unnecessary, had no break point ```'''this game matches the user input with a random 4 digits number, The game works like this: Randomly generate a 4-digit number. Ask the user to guess a 4-digit number. For every digit that the user guessed correctly in the correct place, they have a “cow”. For every digit the user guessed correctly in the wrong place is a “bull.” Every time the user makes a guess, tell them how many “cows” and “bulls” they have. Once the user guesses the correct number, the game is over. ''' def user(): user_input=(input('enter a 4 digit number: ')) return user_input import random random_number = str(random.randint(1000,9999)) def logic(user_input): if len(user_input) != 4: print('please enter a 4 digits number: ') user_input=user() else: pass if user_input == random_number: cows=4 bulls=0 else: count=0 cows=0 bulls=0 for i in user_input: if random_number[count]==user_input[count]: cows+=1 count+=1 elif i in random_number: bulls+=1 count+=1 else: count+=1 print(random_number) return cows,bulls if __name__=='__main__': cows, bulls = logic(user()) while cows!=4: print(cows, ' cows and ', bulls, ' bulls') cows, bulls = logic(user()) print(' you guessed right, the number is ', random_number) ``` ichabod801 Bunny Rabbit Posts: 3,217 Threads: 69 Joined: Sep 2016 Reputation: 171 Likes received: 992 #2 Jan-13-2019, 02:35 AM BTW, it's real helpful if you give us the (full) error text. I could have figured out straight from that rather than fiddling with your game. If they guess right, random_number == user_input, so the while loop in logic is never run. That means logic returns None, because it never encounters the return statement on line 32. metulburr likes this post Craig "Ichabod" O'Brien - xenomind.com I wish you happiness. Recommended Tutorials: BBCode, functions, classes, text adventures « Next Oldest | Next Newest »

Top Page

Forum Jump:

Users browsing this thread: 1 Guest(s)