Python 每日一题:锻炼Python语法的运用,思维逻辑的锻炼,算法能力的培养。
题目:
输入骰子个数,随机输出骰子个数个点数及骰子的总点数。
分析:
方法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
【结语】以上整个程序的实现逻辑,还存在很多不全面的地方,欢迎各位大佬指点;如果觉得笔者不易,请给予点赞,给予我记录更多文章的动力!!