'if' 两个随机数相等时的语句

'if' statement for when two random numbers are equal

我正在尝试一种情况,当我们同时抛两个硬币时,如果两个硬币都是正面,我们就赢,如果两个硬币都是反面,我们就输。

我已经能够使用以下方法生成单独抛硬币的结果:

def coin_one():
one = [random.randint(1, 100) for x in range(100)]
for x in one:
    if x <= 50:
        print('Heads')
    else:
        print('Tails')

第二枚硬币也使用基本相同的方法:

def coin_two():
two = [random.randint(1, 100) for x in range(100)]
for x in two:
  if x <= 50:
    print('Heads')
  else:
    print('Tails')

我正在尝试添加一个条件,如果我们在 coin_one 和 coin_two 中都有 'heads',当两个硬币被抛在同一时间。我该怎么做?

为什么不将两种计算结合在一种方法下,并在一次通过中进行检查?由于您要随机抛硬币;二进制值 0/1 足以准确表示此概率(使用其隐式 bool 值进行相等性检查的额外好处)。

def coin_toss():
    first_coin_tosses = [random.randint(0, 1) for x in range(100)]
    second_coin_tosses = [random.randint(0, 1) for x in range(100)]

    for first_coin_toss, second_coin_toss in zip(first_coin_tosses, second_coin_tosses):
        if first_coin_toss and second_coin_toss:  # Both 1's
            # We win.
        elif not first_coin_toss and not second_coin_toss:  # Both 0's
            # We lose.
        else:
            # if we get a 1 on one coin and and 0 on the other 
            # or vice versa then we neither win nor lose (we try again).

编写两个函数,它们将 return 从 1 到 100 的随机值。 然后在下面写下条件 如果 firstnum >50 且 secondnun > 50: 打印头 别的: 打印尾

您可以通过以下两种方式之一实现您的结果。
第一种方法:
这是直接的解决方案。 将所有硬币一和硬币二的结果存储在一个列表中,然后 return 将其传递给调用方法并检查是否相等。

第二种方法:
您可以 return (实际收益)返回每个硬币 1 和 2 的值,并在调用方法中检查它。

import random

def coin_one():
    one = [random.randint(1, 100) for x in range(100)]
    for x in one:
       if x <= 50:
           print('Heads')
           #Use yield to return value and also continue method execution
           yield 'Heads' #Add this line
       else:
           print('Tails')
           yield 'Tails' #Add this line


def coin_two():
    two = [random.randint(1, 100) for x in range(100)]
    for x in two:
       if x <= 50:
           print('Heads')
           yield 'Heads'
       else:
           print('Tails')
           yield 'Tails'

coin_1_result = coin_one()
coin_2_result = coin_two()
for coin_1, coin_2 in zip(coin_1_result, coin_2_result):
    if coin_1 == 'Heads' and coin_2 == 'Heads':
        print('win')
    else:
        print('loss')

== 运算符用于检查两个原始值(int,string)是否相等

yield 通过将每个结果发送到调用函数而无需 returning 或退出被调用方法(coin_one() 或 coin_two())来帮助构建列表。

这里 zip(a, b) 允许同时迭代两个可迭代对象(示例:列表)。即它会 return coin_1_result[0], coin_2_result[0] 在第一次迭代中,在第二次迭代中它 returns coin_1_result[1], coin_2_result[1] 等等。

此外,您还可以注意到,在从两个函数产生第一组值后,输赢结果将立即打印出来。

示例输出:

尾巴
损失


获胜