Мне нужна программа, которая выбирает четыре карты из колоды и вычисляет их сумму.
Обратите внимание, что ace = 1, jack = 11, queen = 12 и king = 13. После вычисления их суммы проверьте, равна ли эта сумма 24. Если это так, запишите это. В конце концов, программа должна отображать количество комбинаций, которые дают в сумме 24.Выберите четыре карты и проверьте, соответствуют ли они 24 - Python
Вот что у меня есть:
def selfour():
total = 0
cards = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
for a in range(52):
for b in range(1, 52):
for c in range(2, 52):
for d in range(3, 52):
print(cards[a], cards[b], cards[c], cards[d])
if (cards[a] + cards[b] + cards[c] + cards[d]) == 24:
total += 1
return total
def main():
print(selfour())
main()
Я не слишком уверен, что если эта программа дать правильный ответ, но неэффективен. Если кто-нибудь может помочь сделать этот код более эффективным, это будет здорово. Я вполне уверен, что это не дает правильного ответа, поэтому помощь в этом тоже будет отличной.
Thanks
правильный ответ 1291? – Goodies
, вы можете посмотреть https://docs.python.org/2/library/itertools.html#itertools.combinations, чтобы заменить ваши вложенные циклы. –
Одна проблема с кодом заключается в том, что пока вы (правильно) не имеете a, b, c, d всех равных (индекс карты) 0, все они могут быть равны (индекс карты) 3, 4, 5, 6 и т. Д. –