Python While循环,它应该在每次运行后返回一个新的随机整数

Python While循环,它应该在每次运行后返回一个新的随机整数,python,for-loop,if-statement,random,while-loop,Python,For Loop,If Statement,Random,While Loop,我目前正在做一个棋盘游戏。我在编码骰子时遇到了一些麻烦。出于某种原因,while循环在每次运行后都会返回相同的随机整数,而不是新的整数 这就是我所取得的成绩: def dice(): turtle.addshape("bull.gif") player1 = turtle.Turtle() player1.shape("bull.gif") player1.penup() player1.goto(-240,

我目前正在做一个棋盘游戏。我在编码骰子时遇到了一些麻烦。出于某种原因,while循环在每次运行后都会返回相同的随机整数,而不是新的整数

这就是我所取得的成绩:

def dice():



    turtle.addshape("bull.gif")

    player1 = turtle.Turtle()
    player1.shape("bull.gif")
    player1.penup()
    player1.goto(-240, -260)



    turtle.addshape("cow.gif")

    player2 = turtle.Turtle()
    player2.shape("cow.gif")

    player2.penup()
    player2.goto(-240, -220)



    dice1 = random.randint(1, 6)

   


    p1_list = ([-240, -260], [-120, -260], [0, -260], [120, -260], [240, -260], [240, -140], [120, -140], [0, -140], [-120, -140], [-240, -140], [-240, -20], [-120, -20], [0, -20], [120, -20], [240, -20], [240, 100], [120, 100], [0, 100], [-120, 100], [-240, 100], [-240, 220], [-120, 220], [0, 220], [120, 220], [240, 220])

    p2_list = ([-240, -220], [-120, -220], [0, -220], [120, -220], [240, -220], [240, -100], [120, -100], [0, -100], [-120, -100], [-240, -100], [-240, 20], [-120, 20], [0, 20], [120, 20], [240, 20],[ 240, 140], [120, 140], [0, 140], [-120, 140], [-240, 140], [-240, 260], [-120, 260], [0, 260], [120, 260], [240, 260])

    

    dieValue = dice1
    P1_pos = player1.goto(p1_list[0])
    pos = 0

    w = True

    while w == True:

        player1_dice = input("\nBULL (P1): Please press 'ENTER' to roll the dice ")
        
if player1_dice == "":
            print("BULL (P1) rolled a", dice1)

        elif player1_dice != "":
            print("BULL (P1): Please make sure to press 'ENTER' ")

        for pos in range(dieValue) :
            pos += 1
            P1_pos =  player1.goto(p1_list[pos])

        pos = pos


dice()

在这种情况下,整个部分是不必要的,因为它什么也做不了。无论输入什么,他们始终必须按enter键,因此即使他们输入了某些内容,代码也将继续:

        if player1_dice == "":
            print("BULL (P1) rolled a", dice1)

        elif player1_dice != "":
            print("BULL (P1): Please make sure to press 'ENTER' ")
您完全可以这样做:

        print("BULL (P1) rolled a", dice1)
无论如何,while循环应该是这样的:

import random

while True:
    input("\nBULL (P1): Please press 'ENTER' to roll the dice ")

    dice1 = random.randint(1, 6)

    print("BULL (P1) rolled a", dice1)

只需确保在文件开头随机导入即可


因此,从这一点来说,您应该很好,现在可以使用
dice1
变量,但是必须有一种方法退出循环,否则代码将永远卡在那里。因此,可以使用一些break语句或线程来执行函数,并在最后返回值(这样即使没有循环的意义,也可以在while循环中调用函数),但按照您的意愿执行

我已设法为每次运行获得不同的值。我已将dice1变量放入循环中


但是我需要找到一种方法来存储最新的pos值。因此,角色不会从默认位置重新开始,而是应该从上一个位置开始。

dice1=random.randint(1,6)
在循环之前只调用一次。将其移动到循环内部。谢谢,我面临的另一个问题是P1的最新位置不会被存储,它将始终返回到vale inside位置0。我希望保存for循环中的增量,以便P1将从其以前的位置开始,而不是再次从0开始。我想知道是否需要创建一个新的附加变量,如果需要,如何创建?@Kaja何时返回?当您终止程序并再次运行它时?