Python Forum
randint stops changing values in a loop
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
randint stops changing values in a loop
#1
hi! i have a problem i can't understand, randint stops popping new randdom values even if the variables are in the loop:
def pvp():
    dicesonboard = []
    dicesused = []
    dicesonship = []
    dicesremaining = []
    socres = {}
    rounds = 0
    print("if you want to quit type quit")
    while rounds < 3:
        dice1 = randint(1, 6)
        dice2 = randint(1, 6)
        dice3 = randint(1, 6)
        dice4 = randint(1, 6)
        dice5 = randint(1, 6)
        dice6 = randint(1, 6)
        userinput = input("to start the game type throw: ").lower()
        rounds += 1
        if userinput == "quit":
            break
        if userinput == "throw":
            print("let the game begin")
            print("Round", rounds)
            dices = [dice1, dice2, dice3, dice4, dice5, dice6]
            print("Thrown Dices:  ""Dice I: ", dice1, "Dice II: ", dice2, "Dice III: ", dice3, "Dice IV: ", dice4,
                  "Dice V: ", dice5, "Dice VI: ", dice6)
            if 6 not in dicesonship:
                if 6 in dices:
                    print("you have a ship now gather a captain and a crew")
                    for i in dices:
                        if i == 6:
                            dicesonship.append(i)
                            dicesused.append(randint(1, 6))
                            break
as you can see, i did put ranind inside of an append fund while looping but the value stays the same
Error:
Round 1 Thrown Dices: Dice I: 6 Dice II: 6 Dice III: 6 Dice IV: 1 Dice V: 2 Dice VI: 6 you have a ship now gather a captain and a crew [5] [6] to start the game type throw: throw let the game begin Round 2 Thrown Dices: Dice I: 3 Dice II: 6 Dice III: 4 Dice IV: 5 Dice V: 1 Dice VI: 1 [5] [6] to start the game type throw: throw let the game begin Round 3 Thrown Dices: Dice I: 5 Dice II: 1 Dice III: 6 Dice IV: 6 Dice V: 3 Dice VI: 4 [5] [6]
focus on the list with the int 5 (don't care about the other list), i did try to change randint to the variables (dice1,2 etc) but that dosent work..

anyone can explain to me how does this work because i just don't get it, thank you!
Reply
#2
I don't know if this will solve the problem but I thought you have to import random and it should look like this
import random
def pvp():
    dicesonboard = []
    dicesused = []
    dicesonship = []
    dicesremaining = []
    socres = {}
    rounds = 0
    print("if you want to quit type quit")
    while rounds < 3:
        dice1 = random.randint(1, 6)
        dice2 = random.randint(1, 6)
        dice3 = random.randint(1, 6)
        dice4 = random.randint(1, 6)
        dice5 = random.randint(1, 6)
        dice6 = random.randint(1, 6)
        userinput = input("to start the game type throw: ").lower()
        rounds += 1
        if userinput == "quit":
            break
        if userinput == "throw":
            print("let the game begin")
            print("Round", rounds)
            dices = [dice1, dice2, dice3, dice4, dice5, dice6]
            print("Thrown Dices:  ""Dice I: ", dice1, "Dice II: ", dice2, "Dice III: ", dice3, "Dice IV: ", dice4,
                  "Dice V: ", dice5, "Dice VI: ", dice6)
            if 6 not in dicesonship:
                if 6 in dices:
                    print("you have a ship now gather a captain and a crew")
                    for i in dices:
                        if i == 6:
                            dicesonship.append(i)
                            dicesused.append(randint(1, 6))
                            break
Age Doesn't Matter, Your Passion Does
- Shreya Jain
Reply
#3
Obviously 6 is either not in dices, or is in dicesonship, which should be an empty list. Print to see.
Reply
#4
well, that dosen't work, yes i printed the lists too see, what i have copied here is not the ful code, the 6 is in dicesonship but that's not the problem the problem is that the value of ranint is a constant and not random while looping in a while loop.
Reply
#5
(Jan-29-2019, 07:10 PM)Naito Wrote: the problem is that the value of ranint is a constant and not random while looping in a while loop.

I could not replicate your problem:

import random
rounds = 0
while rounds < 3:
        dice1 = random.randint(1, 6)
        dice2 = random.randint(1, 6)
        dice3 = random.randint(1, 6)
        dice4 = random.randint(1, 6)
        dice5 = random.randint(1, 6)
        dice6 = random.randint(1, 6)
        print(dice1, dice2, dice3, dice4, dice5, dice6)
        rounds += 1

1 5 5 4 1 3
5 4 2 5 2 5
4 4 2 4 1 4
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy

Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Using Dictionary to Test Evenness of Distribution Generated by Randint Function new_coder_231013 6 714 Feb-23-2021, 01:29 PM
Last Post: new_coder_231013
Exclamation Compare values in a for loop. penahuse 1 521 Feb-22-2021, 07:01 AM
Last Post: buran
  returning values in for loop Nickd12 4 674 Dec-17-2020, 03:51 AM
Last Post: snippsat
  Help with a random.randint choice in Python booponion 5 646 Oct-23-2020, 05:13 PM
Last Post: deanhystad
  IDLE stops responding upon saving tompi1 2 537 Oct-01-2020, 05:44 PM
Last Post: Larz60+
  Python timer script stops before should ozstar 3 870 May-04-2020, 12:55 AM
Last Post: ozstar
  Python stops without errors shahgourav 4 1,057 Feb-04-2020, 11:44 PM
Last Post: micseydel
  Changing a variable's name on each iteration of a loop rix 6 24,356 Jan-03-2020, 07:06 AM
Last Post: perfringo
  help with changing values in an excel sheet and saving to a new file Moneyman212 2 1,090 Nov-19-2019, 06:25 AM
Last Post: Moneyman212
  Inheriting, given number from randint is not working beLIEve 0 636 Oct-12-2019, 06:50 PM
Last Post: beLIEve

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020