Python 每日一题(骰子模拟器)

Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。


题目:

   输入骰子个数,随机输出骰子个数个点数及骰子的总点数。

分析:

  骰子的点数为1~6号,使用random模块生成随机数。

  方法1:

     1、将骰子个数的点数依次存储到列表中,如:3个骰子则在列表中存储3组1~6的数字;

     2、生成3个随机数(范围为:0~列表的长度),则使用索引的方式获取列表中的元素并求和。

 方法2:

     1、将骰子个数的点数依次存储到列表中,如:3个骰子则在列表中存储3组1~6的数字;

     2、使用random中的shuffle方法打乱,使用切片的方法获取3个元素并求和

方法3:

     1、将骰子个数的点数依次存储到列表中,如:3个骰子则在列表中存储3组1~6的数字;

     2、使用random中的sample方法获取骰子个数个元素并求和

方法4:

    直接随机 1 ~ 6 之间的数,通过传入的骰子个数决定得出点数个数

实现:

import random

# 方法1:随机索引值从骰子列表中获取对应值
def dice_create(num):
    # 存储num个骰子的 1~6 的数
    dice_list = [y for x in range(1, num+1) for y in range(1, 7)]
    
    # 随机构建索引值
    index_list = [random.randint(0, len(dice_list)-1) for i in range(num)]
    
    # 存储索引值对应的骰子列表
    value_list = [] 

    for i in index_list:
        value_list.append(dice_list[i])

    return value_list, sum(value_list)

value_list, total = dice_create(3)
print(f'骰子数:{value_list},骰子总数为:{total}')



# 方法2:随机索引值从骰子列表中获取对应值
def dice_create(num):
    # 存储num个骰子的 1~6 的数
    dice_list = [y for x in range(1, num+1) for y in range(1, 7)]
    
    # 将骰子列表中元素打乱
    random.shuffle(dice_list)
    
    # 获取打乱骰子列表中的前num个骰子数
    value_list = dice_list[:num]

    return value_list, sum(value_list)

value_list, total = dice_create(3)
print(f'骰子数:{value_list},骰子总数为:{total}')



# 方法3:使用random.sample获取num个点数
def dice_create(num):
    # 存储num个骰子的 1~6 的数
    dice_list = [y for x in range(1, num+1) for y in range(1, 7)]

    # 获取打乱骰子列表中的前num个骰子数
    value_list = random.sample(dice_list, num)

    return value_list, sum(value_list)

value_list, total = dice_create(3)
print(f'骰子数:{value_list},骰子总数为:{total}')



# 方法4:使用random.randint获取num个点数
def dice_create(num):
    value_list = []
    for x in range(num):
        value_list.append(random.randint(1, 6))
    return value_list, sum(value_list)

value_list, total = dice_create(3)
print(f'骰子数:{value_list},骰子总数为:{total}')

结果:

# 方法1:
骰子数:[2, 6, 2],骰子总数为:10


# 方法2:
骰子数:[3, 2, 5],骰子总数为:10


# 方法3:
骰子数:[1, 5, 6],骰子总数为:12


# 方法4:
骰子数:[2, 5, 1],骰子总数为:8

结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值