Sorry if this is considered spam, yet another issue I have is that this while loop runs unconditionally and I am not sure how to fix it.
Code:
while anotherNum == True:
playerNum = random.randint(1,10)
total = total + playerNum
print("")
print("Your number is ", str(playerNum) + ".")
print("You have " + str(total) + " in total.")
print("")
again = input("Roll another number? <Y or N> ")
print("")
if again == "Y":
anotherNum == True
else:
anotherNum == False
break
#game finished now
print("Computer got", pcNum)
print("You got", total)
#checking for winner
while anotherNum == False:
if (total <= 13) and (total > pcNum):
print("You,", name, "have won!")
elif (pcNum <= 13) and (pcNum > total):
print("The computer has bested you,", name + "!")
else:
if (total == pcNum) and (total <= 13):
print("Draw...")
elif (pcNum > 13) and (total <= 13):
print("You,", name + " have won!")
else:
print("Both of you have lost. Wow...")
Output:
Your number is 2.
You have 2 in total.
Roll another number? <Y or N> n
Your number is 3.
You have 3 in total.
Roll another number? <Y or N> N
Your number is 3.
You have 3 in total.
Roll another number? <Y or N> N
Your number is 9.
You have 9 in total.
Instead of going to the #game finished now comment's area, the while loop repeats the process whilst only disregarding the total = total + playerNum command.
4 Answers 4
You are not changing the valu
if again == "Y":
anotherNum == True
else:
anotherNum == False
break
You should use 1 equal sign as it is an assignment
if again == "Y":
anotherNum = True
else:
anotherNum = False
break
Comments
Your code (with minimal correction) is working just fine:
import random
total = 0
anotherNum = True
while anotherNum == True:
playerNum = random.randint(1,10)
total = total + playerNum
print("")
print("Your number is ", str(playerNum) + ".")
print("You have " + str(total) + " in total.")
print("")
again = input("Roll another number? <y or n> ")
print("")
if again == "y":
anotherNum = True
else:
anotherNum = False
break
print("You got", total)
The output that I get after running the code:
Your number is 7.
You have 7 in total.
Roll another number? <y or n> y
Your number is 9.
You have 16 in total.
Roll another number? <y or n> y
Your number is 10.
You have 26 in total.
Roll another number? <y or n> y
Your number is 2.
You have 28 in total.
Roll another number? <y or n> y
Your number is 6.
You have 34 in total.
Roll another number? <y or n> n
You got 34
Comments
Here's how I would do it.
while anotherNum:
playerNum = random.randint(1,10)
total += playerNum
print("")
print("Your number is ", str(playerNum) + ".")
print("You have " + str(total) + " in total.")
print("")
again = input("Roll another number? <Y or N> ")
print("")
anotherNum = (again == "Y")
this way you can avoid the if <blank> then true else false which caused you to make a mistake here (simple == instead of =)
Try to remove break and change == to =
import random
total = 0
anotherNum = True
while anotherNum == True:
playerNum = random.randint(1, 10)
total += playerNum
print("")
print(f"Your number is {playerNum}.")
print(f"You have {total} in total.")
print("")
again = input("Roll another number? <Y or N> ")
print("")
if again == "Y":
anotherNum = True # <- HERE
else:
anotherNum = False # <- HERE
OR without anotherNum variable:
import random
total = 0
while True:
playerNum = random.randint(1, 10)
total += playerNum
print("")
print(f"Your number is {playerNum}.")
print(f"You have {total} in total.")
print("")
again = input("Roll another number? <Y or N> ")
print("")
if again == 'N':
break