artais 2023-04-15 23:07 采纳率: 61.1%
浏览 132
已结题

python完成兑奖程序

问题描述

img

基本要求
(1)    设计投注的数据结构。
(2)    投注方式:键盘输入
(3)    设计求解中奖注的算法。
(4)    输出中奖注。
(5) 输入随机注,判断是否中奖,中几等奖。

import random
import time
 

 
def awm(p):
   
    i = 0
    while i <= 5:
        k = random.randint(1, 22)
        if k not in p:
            p[i] = k
            i += 1
 
def select(f):
    print("请从1~22之间任意选取5个不同的整数作为投注号码:")
    # 输入五个数,并排序
    for i in range(5):
        f[i] = int(input())
    f.sort()
    
    # 对输入值进行验证
    while True:
        k = True
        # 判断范围是否在1~22之间
        if any(num < 1 or num > 22 for num in f):
            k = False
        # 判断输入的五个数是否不同
        if len(set(f)) < 5:
            k = False
        # 如果有不符合要求的值,则重新输入
        if not k:
            print("输入错误!请从1~22之间任意选取5个不同的整数作为投注号码:")
            for i in range(5):
                f[i] = int(input())
            f.sort()
        else:
            break
        
def check(p, f):
  
    count = 0
    k = False
    for i in range(5):
        if f[i] in p:
            count += 1
    if f.count(p[5]) > 0:
        k = True
    # 根据规则判断中奖情况
    if count == 5:
        return 1
    elif count == 4 and k:
        return 2
    elif count == 4 and not k:
        return 3
    elif count == 3:
        return 4
    elif count == 2:
        return 5
    else:
        return 0
    
def win(k):
    if k == 1:
        print("一等奖!")
    elif k == 2:
        print("二等奖!")
    elif k == 3:
        print("三等奖!")
    elif k == 4:
        print("四等奖!")
    elif k == 5:
        print("五等奖!")
    else:
        print("未中奖!舒服了!")
    
def print_opt():
    print("------------操作------------")
    print("|抽奖,            请选择1 |")
    print("|大奖设置,        请选择2 |")
    print("|退出本期抽奖,    请选择0 |")
    print("----------------------------")
    
def main():
    f = [0] * 5
    P = [0] * 6
    Case = 1
    print("*************************************第%d期抽奖**********************************" % Case)
    print("选择1    开始")
    print("选择0    退出")
    y = int(input("选择:"))
    while True:
        if y == 0:
            break
        elif y == 1:
            awm(P)
            Case += 1
            while True:
                print_opt()
                h = int(input("请选择:"))
                if h == 0:
                    print("本期抽奖结束!!!")
                    print("大奖号为:", end="")
                    print(*P[:5], sep="  ")
                    print("特别号为:%d" % P[5])
                    break
                elif h == 1:
                    select(f)
                    k = check(P, f)
                    win(k)
                elif h == 2:
                    print("---------兑--------奖----------方-----------式----------")
                    print("|头等奖:5个号码与5个暗码完全相同                        |")
                    print("|二等奖:4个号码与4个暗码完全相同,另一个号码与特别号相同|")
                    print("|三等奖:4个号码与4个暗码完全相同,另一个号码与特别号不同|")
                    print("|四等奖:3个号码与3个暗码完全相同                        |")
                    print("|五等奖:2个号码与2个暗码完全相同                        |")
                    print("|大奖号码将在本期结束公布                               |")
                    print("---------------------------------------------------------")
    print("结束,谢谢参与!!!")
 
if __name__ == '__main__':
    main()

对这些代码进行修改,使其满足题目要求

  • 写回答

9条回答 默认 最新

  • 社区专家-Monster-XH 2023-04-15 23:17
    关注
    
    import random
    
    
    def awm(p):
        """
        生成随机中奖号码
        """
        p[0:5] = random.sample(range(1, 23), 5)
        p[5] = random.randint(1, 23)
    
    
    def select(f):
        """
        选择投注号码
        """
        print("请从1~22之间任意选取5个不同的整数作为投注号码:")
        # 输入五个数,并排序
        while True:
            nums = input().strip().split()
            if len(nums) != 5:
                print("输入错误,请重新输入五个不同的整数:")
                continue
            try:
                nums = [int(num) for num in nums]
                if len(set(nums)) != 5 or any(num < 1 or num > 22 for num in nums):
                    print("输入错误,请重新输入五个不同的1~22的整数:")
                else:
                    f[0:5] = sorted(nums)
                    break
            except ValueError:
                print("输入错误,请重新输入五个不同的整数:")
    
    
    def check(p, f):
        """
        判断中奖等级
        """
        f_set = set(f)
        count = sum([1 for num in f if num in p[0:5]])
        if count == 5 and f[4] == p[5]:
            return "大奖"
        elif count == 5:
            return "一等奖"
        elif count == 4 and f[4] == p[5]:
            return "二等奖"
        elif count == 4:
            return "三等奖"
        elif count == 3:
            return "四等奖"
        elif count == 2:
            return "五等奖"
        else:
            return "未中奖"
    
    
    def print_opt():
        """
        输出操作菜单
        """
        print("------------操作------------")
        print("|抽奖,            请选择1 |")
        print("|退出本期抽奖,    请选择0 |")
        print("----------------------------")
    
    
    def main():
        # 初始化
        p = [0] * 6
        f = [0] * 5
        Case = 1
        opt = -1
    
        while opt != 0:
            print("*************************************第%d期抽奖**********************************" % Case)
            print_opt()
            opt = int(input("请选择操作:"))
    
            if opt == 1:
                awm(p)
                select(f)
                result = check(p, f)
                print("中奖号码:", p)
                print("投注号码:", f)
                print("恭喜您,您获得了%s" % result)
                Case += 1
            elif opt == 0:
                print("退出本期抽奖!")
            else:
                print("输入错误,请重新选择操作!")
    
    
    if __name__ == "__main__":
        main()
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

问题事件

  • 系统已结题 4月27日
  • 已采纳回答 4月19日
  • 创建了问题 4月15日

悬赏问题

  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加