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