#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