Как мне подсчитать, сколько раз что-то было напечатано?

#python #python-3.x

Вопрос:

Моя цель состоит в том, чтобы распечатать цикл 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)
 

Комментарии:

1. Когда это condition2 станет правдой? И что это sides

2. вероятно, вы можете создать переменную вне цикла со значением 0, а внутри цикла увеличивать ее значение всякий раз, когда что-то должно быть напечатано, и печатать значение переменной в конце

3. условие 2 будет верным, когда обе кости бросают 1. стороны были введены пользователем, который спрашивает, сколько сторон у их костей.

4. большое вам спасибо, изначально мой подсчет был неверным, потому что я сделал переменную ВНУТРИ цикла, поэтому каждый раз, когда я выводил переменные, они говорили 1. Теперь я попытался вывести его за пределы цикла, и он выводит правильную переменную

Ответ №1:

Вы должны просто определить counters для каждой ситуации; например, вам нужно counters подсчитать even , odd , doubles , snake_eye , sum_value , highroll , и т. Д. События.
Похоже, вы не реализовали Odd часть программы, она настолько проста, вам просто нужно добавить else значение для нечетных чисел, и с небольшим изменением в even части вы можете сделать ее подходящей для odd s.

 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


 

Комментарии:

1. когда я пытаюсь распечатать счетчик, например print(odds_counter), он просто выводит 1, хотя шансов было гораздо больше. Я не знаю, почему.

2. Если бы вы могли дать мне более подробную информацию или данные, я мог бы помочь вам @altalio