创建必须创建游戏LOTTO的程序

时间:2019-11-16 22:45:41

标签: python loops for-loop if-statement

import random
from random import sample

List1由用户创建。

list1=[]

your_number1= int(input("Input 1 number: "))
list1.append(your_number1)

your_number2= int(input("Input 2 number: "))
list1.append(your_number2)

your_number3= int(input("Input 3 number: "))
list1.append(your_number3)

your_number4= int(input("Input 4 number: "))
list1.append(your_number4)

your_number5= int(input("Input 5 number: "))
list1.append(your_number5)

your_number6= int(input("Input 6 number: "))
list1.append(your_number6)



while(1):
  list2 = range(1, 50)
  list2 = random.sample(list2, 6)

这是由随机创建的list2

  for pair in zip(list1, list2):
      if pair[0] ==  pair[1]:
        print("You win")
        break
      else:
        print("You lose")

此FOR必须比较2个列表

所有程序都是-------编写一个程序,该程序从用户的49个池中提取6个数字。该程序将考虑一组唯一的六个数字。然后程序开始绘制,直到绘制用户选择的数字列表。该程序会给出用户绘制数字的年限和天数(例如,需要x年x x天)。我们假设抽奖每天发生(一日抽奖一次)。 *

2 个答案:

答案 0 :(得分:1)

您可以这样做:

import random
from random import sample
from collections import Counter

list1=[]
for i in range(1,7): # no need to repeat 6 times
     list1.append(input(f"Input {i} number: "))

attempts = 0
numbers = range(1,50)
while(True):
    list2 = random.sample(numbers, 6)
    attempts += 1
    if Counter(list1) == Counter(list2): # counter will make a comparison by counting how many times each number shows up in the list.
        print(f"You win after {attempts}")
        break


答案 1 :(得分:0)

import random

pool = list(range(1, 50))
bet = set(random.sample(pool, 6))
print(f"Random bet: {bet}")
days = 0
while set(random.sample(pool, 6)) != bet:
    days += 1
print(f"You would have to try {days} days")

编辑:以前的版本花费的时间太长。我用numpy重新实现了它:

import numpy as np

pool = np.arange(1, 50, dtype=np.int8)
bet = np.sort(np.random.choice(pool, (6,)))
batch_size = 10 ** 6
tries = 0
while True:
    draws = np.sort(np.random.choice(pool, size=(batch_size, 6)))
    bingo = np.argwhere(np.all(draws - bet == 0, axis=1))
    if bingo.shape == (1, 1):
        print("It took", tries + bingo.flat[0])
        break
    tries += batch_size