100 cas de combat réel de Xiaobai : un programme complet et simple de jugement gagnant à la loterie Shuangseqiu, adapté au démarrage de Xiaobai


insérez la description de l'image ici

avant-propos

Dans cet article, nous fournirons un cas pratique pour le démarrage de Xiaobai, c'est-à-dire un simple programme de jugement gagnant de loterie à double boule de couleur. En tant que débutant en programmation informatique, à travers la pratique d'une centaine de cas pratiques, il peut nous aider à maîtriser progressivement les concepts et compétences de base de la programmation. Cet article fournira aux lecteurs un cas concret pour montrer comment utiliser Python pour écrire du code afin de résoudre des problèmes réels. Grâce à des explications et des étapes détaillées, les lecteurs peuvent comprendre le principe de fonctionnement du programme et peuvent le modifier et l'étendre en fonction de leurs propres besoins. Que ce soit pour les développeurs débutants ou expérimentés, en pratiquant de tels cas, ils peuvent améliorer leur capacité de programmation et leur capacité à résoudre des problèmes. Par conséquent, cet article convient à tous les débutants désireux d'améliorer leurs compétences en programmation par la pratique.

importer les modules nécessaires

insérez la description de l'image ici

import random
from itertools import permutations
import sys

Les modules nécessaires sont importés : randompour générer des nombres aléatoires, permutationspour calculer des permutations, syspour terminer le programme.

Initialiser les numéros de loterie

insérez la description de l'image ici

kaijiang_red = [x for x in range(1, 21)]
kaijiang_red_ball = random.sample(kaijiang_red, 5)
kaijiang_blue = [x for x in range(1, 11)]
kaijiang_blue_ball = random.choice(kaijiang_blue)

Initialiser les numéros de loterie. Générez un numéro de boule rouge de 1 20 grâce à la compréhension de la liste et utilisez la fonction "random.sample" pour sélectionner au hasard 5 numéros comme numéro de boule rouge pour la loterie en cours ; générez un numéro de boule bleue de 1 10 et utilisez random.choicela fonction pour sélectionner au hasard un numéro comme numéro de boule bleue pour la loterie en cours.

Règles de pari Shuangseqiu et règles de gain

insérez la description de l'image ici

print("若城双色球\n双色球投注规则具体规定如下:\n需要投注5个红色球号码和1个蓝色球号码,提示输入后输入5个红球号码(5个号码各不相同)和1个蓝球号码,"
      "红球输入数值为1~20,蓝球输入数值为1~10,每个号码之间用逗号或空格隔开。"
      "\n双色球中奖规则具体规定如下:\n一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;"
      "\n二等奖:投注号码与当期开奖号码中的5个红色球号码相同,即中奖;"
      "\n三等奖:投注号码与当期开奖号码中的任意4个红色球号码和1个蓝色球号码相同,即中奖;"
      "\n四等奖:投注号码与当期开奖号码中的任意3个红色球号码和1个蓝色球号码相同,即中奖;"
      "\n例:假如当期开奖号码为:红球为1,8,13,15,18,蓝球为10,"
      "小明投注号码为:红球为1,8,13,15,18,蓝球为10。则与当期号码全部相同,中一等奖。")

Imprimez les règles de pari et les règles de gain de Shuangseqiu.

Calculer le classement des lots gagnants

insérez la description de l'image ici

jiang12 = list(permutations(kaijiang_red_ball, 5))

jiang3_4 = list(permutations(kaijiang_red_ball, 4))
jiang3 = []
for i in range(1, 6):
    for j in range(1, 21):
        for x in range(len(jiang3_4)):
            list1 = list(jiang3_4[x])
            list1.insert(i-1, j)
            jiang3.append(list1)

jiang4_3 = list(permutations(kaijiang_red_ball, 3))
jiang4_4 = []
for i in range(1, 5):
    for j in range(1, 21):
        for x in range(len(jiang4_3)):
            list1 = list(jiang4_3[x])
            list1.insert(i-1, j)
            jiang4_4.append(list1)
jiang4 = []
for i in range(1, 6):
    for j in range(1, 21):
        for x in range(len(jiang4_4)):
            list1 = list(jiang4_4[x])
            list1.insert(i-1, j)
            jiang4.append(list1)

Calculez la permutation des prix gagnants. jiang12Indique la situation de gagner le premier prix, c'est-à-dire que les 5 numéros de boules rouges sont identiques ; jiang3indique la situation de gagner le troisième prix, c'est-à-dire que le nombre de 4 boules rouges est le même que celui d'1 boule bleue ; indique la situation de gagner le quatrième prix, c'est-à-dire que le nombre de 3 boules rouges est le même que celui d'1 boule bleue jiang4.

Recevoir le numéro de boule rouge entré par l'utilisateur

insérez la description de l'image ici

x = input('请输入红球号码(用逗号或空格隔开): ')
x = x.replace(" ", ",")  # 将空格替换为逗号
user_red_number = x.split(",")
user_red = [int(num) for num in user_red_number if num.strip()]  # 去除空字符串和多余的空格

Recevez les numéros de boules rouges entrés par l'utilisateur, séparés par des virgules ou des espaces. Remplacez les espaces par des virgules, puis utilisez splitune fonction pour diviser la chaîne et utilisez une compréhension de liste pour convertir un nombre de type chaîne en un type entier.

Déterminer si le numéro de boule rouge saisi par l'utilisateur est conforme à la réglementation

if len(user_red) != 5 or len([x for x in user_red if x > 20 or x < 1]) or len(user_red) != len(set(user_red)):
    print("您输入的值不符合规定")
    sys.exit()
else:
    print("成功输入红球号码")

Juger si les numéros de boules rouges entrés par l'utilisateur répondent aux exigences : le nombre de numéros de boules rouges doit être de 5, et la plage de chaque numéro de boule rouge est comprise entre 1 et 20, et les numéros de boules rouges ne peuvent pas être répétés. S'il ne répond pas aux exigences, imprimez un message d'erreur et terminez le programme ; sinon, imprimez le numéro de boule rouge saisi avec succès.

Recevoir le numéro de boule bleue saisi par l'utilisateur

y = int(input('请输入蓝球号码: '))

if y > 10 or y < 1:
    print("您输入的值不符合规定")
    sys.exit()
else:
    print("成功输入蓝球号码")

Recevez le numéro de basket saisi par l'utilisateur et convertissez-le en un type entier. Juger si le numéro de basket est conforme à la réglementation : le numéro de basket va de 1 à 10. S'il ne répond pas aux exigences, imprimez un message d'erreur et terminez le programme ; sinon, imprimez avec succès le numéro de boule bleue saisi.

Déterminer si l'utilisateur a gagné à la loterie

user_red_tuple = tuple(user_red)
if y == kaijiang_blue_ball:
    if user_red_tuple in jiang12:
        print("恭喜您中了一等奖")
    elif user_red_tuple in jiang3:
        print("恭喜您中了三等奖")
    elif user_red_tuple in jiang4:
        print("恭喜您中了四等奖")
elif user_red_tuple in jiang12:
    print("恭喜您中了二等奖")
else:
    print("很遗憾,您没有中奖")

Déterminez si l'utilisateur a gagné un prix. Convertissez d'abord le numéro de boule rouge de l'utilisateur en un type de tuple. Si le numéro de boule bleue sélectionné par l'utilisateur est le même que le numéro de boule bleue de la loterie, il est jugé si le numéro de boule rouge de l'utilisateur est le même que le premier prix, le troisième prix et le quatrième prix, et s'ils sont identiques, les informations gagnantes correspondantes sont imprimées ; Si le numéro de boule bleue sélectionné par l'utilisateur est différent du numéro de boule bleue de la loterie, il est jugé s'il faut gagner le premier prix. Si vous n'êtes pas satisfait, imprimez l'information indiquant qu'il n'y a pas de gain.

Imprimer les numéros de loterie actuels

print("本期红球号码为:", kaijiang_red_ball)
print("本期蓝球号码为:", kaijiang_blue_ball)

Générez toutes les combinaisons possibles de numéros de boules rouges et supprimez la loterie sélectionnée par l'utilisateur

blue = []
red = [x for x in range(1, 21)]
for rad_ball_permutation in permutations(red, 5):
    blue.append(rad_ball_permutation)
all_tickets = [blue] * 10

index_one = all_tickets[y - 1].index(user_red_tuple)
del all_tickets[y - 1][index_one]

Simulez les données de loterie dans la base de données avec une liste pour générer toutes les combinaisons possibles de numéros de boules rouges. blueLa liste stocke toutes les combinaisons de numéros de boules rouges, et redla liste est une liste de numéros de boules rouges de 1 à 20. Organisez la liste via permutationsla fonction pour obtenir toutes les combinaisons de numéros de boules rouges et ajoutez-les à la liste. Vous vous retrouvez avec une liste de 10 éléments , où chaque élément est une référence à la liste.redblueall_ticketsblue

Ensuite, selon le numéro de boule bleue et le numéro de boule rouge sélectionnés par l'utilisateur, trouvez la position d'index correspondante et supprimez le billet de loterie à la position d'index.

code complet

from itertools import permutations
import sys

# 初始化开奖号码
kaijiang_red = [x for x in range(1, 21)]
kaijiang_red_ball = random.sample(kaijiang_red, 5)  # 从kaijiang_red中随机选取5个数作为红球号码
kaijiang_blue = [x for x in range(1, 11)]
kaijiang_blue_ball = random.choice(kaijiang_blue)  # 从kaijiang_blue中随机选择一个数作为蓝球号码

# 双色球说明
print("若城双色球\n双色球投注规则具体规定如下:\n需要投注5个红色球号码和1个蓝色球号码,提示输入后输入5个红球号码(5个号码各不相同)和1个蓝球号码,"
      "红球输入数值为1~20,蓝球输入数值为1~10,每个号码之间用逗号或空格隔开。"
      "\n双色球中奖规则具体规定如下:\n一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖;"
      "\n二等奖:投注号码与当期开奖号码中的5个红色球号码相同,即中奖;"
      "\n三等奖:投注号码与当期开奖号码中的任意4个红色球号码和1个蓝色球号码相同,即中奖;"
      "\n四等奖:投注号码与当期开奖号码中的任意3个红色球号码和1个蓝色球号码相同,即中奖;"
      "\n例:假如当期开奖号码为:红球为1,8,13,15,18,蓝球为10,"
      "小明投注号码为:红球为1,8,13,15,18,蓝球为10。则与当期号码全部相同,中一等奖。")

# 计算排列情况
jiang12 = list(permutations(kaijiang_red_ball, 5))  # 计算5个红色球号码的全排列

jiang3_4 = list(permutations(kaijiang_red_ball, 4))  # 计算4个红色球号码的全排列
jiang3 = []
for i in range(1, 6):
    for j in range(1, 21):
        for x in range(len(jiang3_4)):
            list1 = list(jiang3_4[x])
            list1.insert(i-1, j)
            jiang3.append(list1)  # 将其中一个位置插入1-20之间的数,生成符合条件的三等奖的号码

jiang4_3 = list(permutations(kaijiang_red_ball, 3))  # 计算3个红色球号码的全排列
jiang4_4 = []
for i in range(1, 5):
    for j in range(1, 21):
        for x in range(len(jiang4_3)):
            list1 = list(jiang4_3[x])
            list1.insert(i-1, j)
            jiang4_4.append(list1)  # 将其中一个位置插入1-20之间的数,生成符合条件的四等奖的号码
jiang4 = []
for i in range(1, 6):
    for j in range(1, 21):
        for x in range(len(jiang4_4)):
            list1 = list(jiang4_4[x])
            list1.insert(i-1, j)
            jiang4.append(list1)  # 将其中一个位置插入1-20之间的数,生成符合条件的四等奖的号码

# 用户输入
x = input('请输入红球号码(用逗号或空格隔开): ')
x = x.replace(" ", ",")  # 将空格替换为逗号
user_red_number = x.split(",")  # 使用逗号分割字符串得到红球号码列表
user_red = [int(num) for num in user_red_number if num.strip()]  # 去除空字符串和多余的空格,并将数字转换为整数

if len(user_red) != 5 or len([x for x in user_red if x > 20 or x < 1]) or len(user_red) != len(set(user_red)):
    print("您输入的值不符合规定")
    sys.exit()
else:
    print("成功输入红球号码")

y = int(input('请输入蓝球号码: '))

if y > 10 or y < 1:
    print("您输入的值不符合规定")
    sys.exit()
else:
    print("成功输入蓝球号码")

# 判断是否中奖
user_red_tuple = tuple(user_red)
if y == kaijiang_blue_ball:
    if user_red_tuple in jiang12:
        print("恭喜您中了一等奖")
    elif user_red_tuple in jiang3:
        print("恭喜您中了三等奖")
    elif user_red_tuple in jiang4:
        print("恭喜您中了四等奖")
elif user_red_tuple in jiang12:
    print("恭喜您中了二等奖")
else:
    print("很遗憾,您没有中奖")

print("本期红球号码为:", kaijiang_red_ball)
print("本期蓝球号码为:", kaijiang_blue_ball)

# 用all列表模拟在数据库中删除用户买过的彩票
blue = []
red = [x for x in range(1, 21)]
for rad_ball_permutation in permutations(red, 5):
    blue.append(rad_ball_permutation)  # 生成所有可能的红球号码和对应的全排列存入blue列表
all_tickets = [blue] * 10  # 生成包含10个blue列表的all_tickets列表

index_one = all_tickets[y - 1].index(user_red_tuple)  # 找到用户买过的彩票在all_tickets中的位置
del all_tickets[y - 1][index_one]  # 删除用户买过的彩票

Démonstration d'effet

insérez la description de l'image ici

Aperçu du prochain numéro

Une centaine de lignes de code Python pour implémenter le système de louanges

Je suppose que tu aimes

Origine blog.csdn.net/qq_33681891/article/details/131850482
conseillé
Classement