Python while循环中的计数/随机整数
我想让这个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
# 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)< <代码>。