Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python while循环中的计数/随机整数_Python_Loops_Random_While Loop_Integer - Fatal编程技术网

Python while循环中的计数/随机整数

Python while循环中的计数/随机整数,python,loops,random,while-loop,integer,Python,Loops,Random,While Loop,Integer,我想让这个while循环在每次迭代中都改变数字(计数和随机整数)。但是当我运行程序时,循环只会在计数和随机整数上使用相同的数字: # if 4 sides die1 = random.randint(1,4) die2 = random.randint(1,4) count = 1 while sides == 4 and die1 != die2: print (count, ". die number 1 is", die1, "and die number 2 is", di

我想让这个while循环在每次迭代中都改变数字(计数和随机整数)。但是当我运行程序时,循环只会在计数和随机整数上使用相同的数字:

# if 4 sides 
die1 = random.randint(1,4)
die2 = random.randint(1,4)
count = 1 

while sides == 4 and die1 != die2:
    print (count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    count == count + 1

print ("You got snake eyes! Finally! On try number", count,".")
每次调用
random.randint(1,4)
,您都在创建一个随机数。当你打印它时,它不会神奇地变成一个新的随机数

使用
random.randint(1,4)
while
循环中生成新的随机数

第二个问题是
count==count+1
检查是否相等(在您的情况下返回
False
)。要执行赋值,请使用赋值运算符
=
count+=1
计数增加一

如果您想要一个无休止地输出随机数的生成器,请编写一个:

>>> import random
>>> def rng(i, j):
...     while True:
...         yield random.randint(i, j)
... 
>>> random_gen = rng(1, 4)
>>> next(random_gen)
2
>>> next(random_gen)
3
>>> next(random_gen)
2
>>> next(random_gen)
2
>>> next(random_gen)
1
每次调用
random.randint(1,4)
,您都在创建一个随机数。当你打印它时,它不会神奇地变成一个新的随机数

使用
random.randint(1,4)
while
循环中生成新的随机数

第二个问题是
count==count+1
检查是否相等(在您的情况下返回
False
)。要执行赋值,请使用赋值运算符
=
count+=1
计数增加一

如果您想要一个无休止地输出随机数的生成器,请编写一个:

>>> import random
>>> def rng(i, j):
...     while True:
...         yield random.randint(i, j)
... 
>>> random_gen = rng(1, 4)
>>> next(random_gen)
2
>>> next(random_gen)
3
>>> next(random_gen)
2
>>> next(random_gen)
2
>>> next(random_gen)
1

您还需要在
循环中执行
随机
调用,否则它们不会更改。另一件事是比较
=
,而不是设置
=
计数器:

import random

sides = 4
count = 1 
die1 = random.randint(1,4)
die2 = random.randint(1,4)

while sides == 4 and die1 != die2:
    print (count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    count += 1
    die1 = random.randint(1,4)
    die2 = random.randint(1,4)

print ("You got snake eyes! Finally! On try number", count,".")
尝试测试运行会让我:

1。模具编号1为4,模具编号2为3。
2.模具编号1为2,模具编号2为1。
3.模具编号1为1,模具编号2为2。
4.模具编号1为3,模具编号2为4。
5.模具编号1为1,模具编号2为4。
你有蛇眼!最后试试6号。
一种几乎相同但使用
中断
而不是while循环上的条件的替代方法是:

import random

sides = 4
count = 1 

def tossdie():
    """Function to create a random integer for a die"""
    return random.randint(1,4)

while True:
    die1 = tossdie()
    die2 = tossdie()
    print (count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    if die1 == die2:
        break
    count += 1

print ("You got snake eyes! Finally! On try number", count,".")

您还需要在
循环中执行
随机
调用,否则它们不会更改。另一件事是比较
=
,而不是设置
=
计数器:

import random

sides = 4
count = 1 
die1 = random.randint(1,4)
die2 = random.randint(1,4)

while sides == 4 and die1 != die2:
    print (count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    count += 1
    die1 = random.randint(1,4)
    die2 = random.randint(1,4)

print ("You got snake eyes! Finally! On try number", count,".")
尝试测试运行会让我:

1。模具编号1为4,模具编号2为3。
2.模具编号1为2,模具编号2为1。
3.模具编号1为1,模具编号2为2。
4.模具编号1为3,模具编号2为4。
5.模具编号1为1,模具编号2为4。
你有蛇眼!最后试试6号。
一种几乎相同但使用
中断
而不是while循环上的条件的替代方法是:

import random

sides = 4
count = 1 

def tossdie():
    """Function to create a random integer for a die"""
    return random.randint(1,4)

while True:
    die1 = tossdie()
    die2 = tossdie()
    print (count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    if die1 == die2:
        break
    count += 1

print ("You got snake eyes! Finally! On try number", count,".")

不确定为什么需要
sides
变量,所以我把它省略了。 您希望在每个循环中滚动模具,这意味着您必须将
die1
die2
重新分配给每个循环中的随机数

import random

# Initial parameters
die1 = random.randint(1,4)
die2 = random.randint(1,4)
count = 1

# Loop and roll die each time
while die1 != die2:
    print(count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    die1 = random.randint(1,4)
    die2 = random.randint(1,4)
    count += 1

# Print on which die roll you got two equal die numbers rolled
print ("You got snake eyes! Finally! On try number", count,".")

不确定为什么需要
sides
变量,所以我把它省略了。 您希望在每个循环中滚动模具,这意味着您必须将
die1
die2
重新分配给每个循环中的随机数

import random

# Initial parameters
die1 = random.randint(1,4)
die2 = random.randint(1,4)
count = 1

# Loop and roll die each time
while die1 != die2:
    print(count, ". die number 1 is", die1, "and die number 2 is", die2,".")
    die1 = random.randint(1,4)
    die2 = random.randint(1,4)
    count += 1

# Print on which die roll you got two equal die numbers rolled
print ("You got snake eyes! Finally! On try number", count,".")

您可以使用带有
iter
的for循环吐出随机数对,
enumerate
将进行计数,对于蛇眼,您还应该检查两者是否都是1,而不是随机匹配对:

from random import randint                                                                   

def repeating_rand(i, j):                                                                    
    for count, (r1, r2 ) in enumerate(iter(lambda: (randint(i, j), randint(i, j)), None), 1):
        if r1 == 1 and r2 == 1:                                                              
            return "You got snake eyes! Finally! On try number {}.".format(count)            
        print("Try no. {}, die number 1 is {} and die number 2 is {}".format(count, r1, r2)) 
输出:

 In [12]: repeating_rand(1, 4)
Try no. 1, die number 1 is 1 and die number 2 is 2
Try no. 2, die number 1 is 4 and die number 2 is 1
Try no. 3, die number 1 is 1 and die number 2 is 2
Try no. 4, die number 1 is 1 and die number 2 is 3
Try no. 5, die number 1 is 1 and die number 2 is 3
Try no. 6, die number 1 is 3 and die number 2 is 4
Try no. 7, die number 1 is 4 and die number 2 is 2
Try no. 8, die number 1 is 1 and die number 2 is 2
Try no. 9, die number 1 is 3 and die number 2 is 2
Try no. 10, die number 1 is 4 and die number 2 is 3
Try no. 11, die number 1 is 1 and die number 2 is 3
Try no. 12, die number 1 is 3 and die number 2 is 4
Out[12]: 'You got snake eyes! Finally! On try number 13.'

您可以使用带有
iter
的for循环吐出随机数对,
enumerate
将进行计数,对于蛇眼,您还应该检查两者是否都是1,而不是随机匹配对:

from random import randint                                                                   

def repeating_rand(i, j):                                                                    
    for count, (r1, r2 ) in enumerate(iter(lambda: (randint(i, j), randint(i, j)), None), 1):
        if r1 == 1 and r2 == 1:                                                              
            return "You got snake eyes! Finally! On try number {}.".format(count)            
        print("Try no. {}, die number 1 is {} and die number 2 is {}".format(count, r1, r2)) 
输出:

 In [12]: repeating_rand(1, 4)
Try no. 1, die number 1 is 1 and die number 2 is 2
Try no. 2, die number 1 is 4 and die number 2 is 1
Try no. 3, die number 1 is 1 and die number 2 is 2
Try no. 4, die number 1 is 1 and die number 2 is 3
Try no. 5, die number 1 is 1 and die number 2 is 3
Try no. 6, die number 1 is 3 and die number 2 is 4
Try no. 7, die number 1 is 4 and die number 2 is 2
Try no. 8, die number 1 is 1 and die number 2 is 2
Try no. 9, die number 1 is 3 and die number 2 is 2
Try no. 10, die number 1 is 4 and die number 2 is 3
Try no. 11, die number 1 is 1 and die number 2 is 3
Try no. 12, die number 1 is 3 and die number 2 is 4
Out[12]: 'You got snake eyes! Finally! On try number 13.'

骰子游戏中的蛇眼一般指的是一对,而不是任何一对。为了摆脱输出中无用的空白,考虑<代码>打印(“{},骰子号码1是{},骰子号码2是{}”)。格式(计数,die1,die2)。骰子游戏中的蛇眼一般指的是一对,不只是任何一对。要清除输出中的无用空白,请考虑<代码>打印(“{}。骰子编号1是{},骰子号码2是{}”)。格式(计数,die1,die2)< <代码>。