【问题标题】:How do I keep count of how many times something has been printed?我如何计算打印了多少次?
【发布时间】:2021-10-09 04:33:35
【问题描述】:

我的目标是打印两个骰子滚动的 while 循环,它们将继续滚动,直到两个骰子都是 1 和 1,在这种情况下,它们都是奇数,都是双打。但是,如果他们掷出任何其他数字,例如 2 和 2,则将被视为偶数和双数。最后,我想记录骰子滚动了多少次,直到两个都掷出 1,以及赔率、偶数和双倍出现的频率。由于整个程序太长,我只包含一段代码。

我不知道从哪里开始,而且我是 python 新手。

condition2 = False

while condition2 == False:
    count = 0

    die1 = random.randint(1,sides+1)
    die2 = random.randint(1,sides+1)

   
    evens = "Evens!"
    odds = "Odds!"
    doubles = "Doubles!"
    snake_eye = "Snake Eyes!"
    sum_value = "Sum is size value!"
    highroll = "High Roll!"
    high_low_roll = "High/Low Roll!"
    low_high_roll = "Low/High Roll!"

    if die1 % 2 == 0 and die2 % 2 == 0: #For the even numbers
        if die1 == die2 and die1 + die2 == sides: #For even numbers that add up to sum value
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles, sum_value)
        elif die1 == 6 and die2 == 6: #For high roll
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles, highroll)
        elif die1 + die1 == die2: #Even numbers that are equal
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles)
        else: #Even numbers that are simply even, nothing else
            print("die #1 is", "*" + str(die1) + "*", "and die #2 is", "*" + str(die2) + "*", evens)

【问题讨论】:

  • condition2 什么时候是真的?什么是sides
  • 您可以在循环外创建一个值为 0 的变量,并在循环内每当需要打印某些内容时增加其值并在最后打印变量的值
  • condition2 在两个骰子都掷出 1 时为真。边是用户的输入,询问他们的骰子有多少边。
  • 非常感谢,最初我的计数不正确,因为我在循环内创建了变量,所以每次我打印出变量时,他们都会说 1。现在我试着把它放在外面循环,并打印正确的变量

标签: python python-3.x


【解决方案1】:

您应该为每种情况定义counters;例如,您需要counters 来计算evenodddoublessnake_eyesum_valuehighroll 等事件。
看来你没有实现程序的Odd部分,就这么简单,你只需要为奇数添加一个else,并在even部分稍作改动,你就可以使它适合对于odds。

import random

sides = 6
while True: 

    die1 = random.randint(1,sides+1)
    die2 = random.randint(1,sides+1)

    # Initialize the counters for each situation
    even_counter = 0
    odds_counter = 0 
    doubles_counter = 0
    sanke_eye_counter = 0
    sum_value_counter = 0
    highroll_counter = 0
    highlow_counter = 0
    lowhigh_counter = 0

    evens = "Evens!"
    odds = "Odds!"
    doubles = "Doubles!"
    snake_eye = "Snake Eyes!"
    sum_value = "Sum is size value!"
    highroll = "High Roll!"
    high_low_roll = "High/Low Roll!"
    low_high_roll = "Low/High Roll!"

    if die1 % 2 == 0 and die2 % 2 == 0: #For the even numbers
        if die1 == die2 and die1 + die2 == sides: #For even numbers that add up to sum value
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles, sum_value)
            even_counter += 1; doubles_counter += 1; sum_value += 1
        elif die1 == 6 and die2 == 6: #For high roll
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles, highroll)
            even_counter += 1; doubles_counter += 1; highroll_counter += 1
        elif die1 + die1 == die2: #Even numbers that are equal
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", evens, doubles)
            even_counter += 1; doubles_counter += 1
        else: #Even numbers that are simply even, nothing else
            print("die #1 is", "*" + str(die1) + "*", "and die #2 is", "*" + str(die2) + "*", evens)
            even_counter += 1
    else:
        if die1 == 1 and die2 == 1: # End of the rolls
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", odds, doubles, sum_value)
            odds_counter += 1; doubles_counter += 1; sum_value += 1
            break # end of the while loop
        elif die1 == die2 and die1 + die2 == sides: #For odd numbers that add up to sum value
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", odds, doubles, sum_value)
            odds_counter += 1; doubles_counter += 1; sum_value += 1
        elif die1 + die1 == die2: #Odd numbers that are equal
            print("die #1 is", "*"+str(die1)+"*", "and die #2 is", "*"+str(die2)+"*", odds, doubles)
            odds_counter += 1; doubles_counter += 1
        else: #Odd numbers that are simply even, nothing else
            print("die #1 is", "*" + str(die1) + "*", "and die #2 is", "*" + str(die2) + "*", odds)
            odds_counter += 1


【讨论】:

  • 当我尝试打印计数器时,例如 print(odds_counter),它只打印 1,即使几率更大。我不知道为什么。
  • 如果你能给我更多的细节或数据,我可以帮助你@altlio
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
相关资源
最近更新 更多