簡體   English   中英

當兩個隨機數相等時的'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”,則將打印('win')。 我該怎么做呢?

為什么不將兩種計算都用一種方法結合起來,而檢查卻要一遍呢? 由於您要隨機投幣; 二進制值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).

編寫兩個函數,這些函數將返回1-100之間的隨機值。 然后在諸如firstnum> 50和secondnun> 50的條件下寫:打印頭Else:打印尾

您可以通過以下兩種方式之一來實現結果。
第一種方法:
這是直接的解決方案。 將所有硬幣一和硬幣二的結果存儲在一個列表中,並將其返回到調用方法並檢查是否相等。

第二種方法:
您可以為每個硬幣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,字符串)是否相等

yield通過將每個結果發送到調用函數而不返回或退出被調用方法(coin_one()或coin_two())來幫助構建列表。

zip(a,b)允許同時迭代兩個可迭代對象(例如:list)。 即,它將在第一次迭代中返回coin_1_result [0],coin_2_result [0],在第二次迭代中將返回coin_1_result [1],coin_2_result [1],依此類推。

此外,您還可以注意到,從這兩個函數產生第一組值后,贏或輸的結果將立即打印出來。

樣本輸出:

尾巴
失利


贏得

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM