Re: Rock Paper Scissors Code Bug?
MRAB <[email protected]> Thu, 18 Dec 2025 19:27:25 +0000
| Newsgroups | gmane.comp.python.general |
|---|---|
| Message-ID | <[email protected]> |
On 18/12/2025 18:34, Gregg Drennan via Python-list wrote: > No chatbot involved. I was typing this on my phone in bed last night and > didn't have a Python interpreter handy that I could verify this with. I > will certainly check this. > > In any case, since verifying that a valid choice was made was made is done > in the same IF statement as the check for None, it seems to be a moot > point. > > Calling lower() on None will cause an Exception so I would always recommend > making that check on any user input. > The `input` function always returns a string (`str`), so using `.lower()` or `.casefold()` on its result will always succeed. > Yes, using casefold to deal with non-ascii characters is a good point. In > this case, we don't care what the input was if it's not one of the four > valid choices...we just treat it as invalid and prompt the player to enter > a valid choice. > > > On Thu, Dec 18, 2025, 8:21 AM Thomas Passin <[email protected]> wrote: > >> On 12/17/2025 10:43 PM, Gregg Drennan via Python-list wrote: >>> The other recommendation i would make is to shorten the response the >> player >>> needs to give when choosing their option. "R", "P", "S" is sufficient to >>> determine the player's choice. Making the player enter the whole word >>> introduces opportunity for misspellings. I would also allow the player >> to >>> enter "Q" in case they decide to stop playing. And always check to make >>> sure the player entered something and didn't just hit enter. Also don't >>> use .lower() until you check to make sure you have a valid entry, the >>> player might enter a character that can't be converted to lower case, >> like >>> a number or punctuation. >> See, here's the problem with relying on a chatbot. Calling lower() works >> fine for a character that doesn't have a lowerclass version. It just >> returns the original. >> >> >>> while True: >>> player_choice = input("Please enter your choice (Rock, Paper, >> Scissors, >>> or Quit): " >>> If not player_choice or player_choice[0] not in "RPSQrpsq": # >> check >>> if None or invalid choice >>> print("Invalid choice...") >>> else: >>> If player_choice[0].lower() == "q": >>> print("Thanks for playing. Good-bye.") >>> break >>> # code to score the choices, blah, blah, blah >>> >>> Good luck with your new version! >>> >>> On Mon, Dec 8, 2025, 5:37 PM John Smith via Python-list < >>> [email protected]> wrote: >>> >>>> Thanks for the recommendations. I'm building a whole new version based >> on >>>> the old one, with simpler code and functions to find win stats. >>>> -- >>>> https://mail.python.org/mailman3//lists/python-list.python.org >>>> >> -- >> https://mail.python.org/mailman3//lists/python-list.python.org >>