Need for a user to input bowling scores and store them, to be totaled and averaged later and they can press “q” or “Q” to quit and total/average them. I’ve tried fumbling around figuring out loops but not sure how to deal with inputting integers and also accepting “Q” to stop loop. Thanks for any help.
nums = [] scores = "" while scores != 'q'.lower(): scores = input("Please enter a score (xxx) or 'q' to exit: ") if scores != 'q': nums.append(int(scores)) elif scores == 'q'.lower(): print("quitting") break scores = int() def Average(nums): return sum(nums) / len(nums) total = sum(nums) print(f"The total score is: {total}") average = Average(nums) print("The score average is: ", round(average, 2))
Getting error: Traceback (most recent call last): File “/Users/ryaber/PycharmProjects/pythonProject/main.py”, line 11, in scores = input(“Please enter a score (xxx) or ‘q’ to exit: “) File “”, line 1, in NameError: name ‘q’ is not defined
So not sure how to allow it to accept “Q” to stop loop and total/average them.
Advertisement
Answer
Remove
.lower()
inq.lower()
and move it and make it toscore.lower()
. So if user types inq
orQ
both will be accepted as quitYou do not need average function or
while scores != 'q'
instead you could change it to something simple
So complete code –
nums = [] scores = "" while True: scores = input("Please enter a score (xxx) or 'q' to exit: ") if scores.lower() != 'q': nums.append(int(scores)) elif scores.lower() == 'q': print("quitting") break scores = int() total = sum(nums) print(f"The total score is: {total}") average = total/len(nums) print("The score average is: ", round(average, 2))
Result:
Please enter a score (xxx) or 'q' to exit: 25 Please enter a score (xxx) or 'q' to exit: 32 Please enter a score (xxx) or 'q' to exit: Q quitting The total score is: 57 The score average is: 28.5
Edit – While this may be complicated, this will solve your problem –
nums = [] scores = "" while True: scores = input("Please enter a score (xxx) or 'q' to exit: ") try: # This will run when scores is a number scores = int(scores) if scores.lower() == type(0): nums.append(int(scores)) except: # Will run when it is a alphabet if scores.lower() == 'q': print("quitting") break else: continue scores = int() total = sum(nums) print(f"The total score is: {total}") average = total/len(nums) print("The score average is: ", round(average, 2)) break