首页 > 编程语言 >我喜欢 Python,因为它可以帮助我回答小问题

我喜欢 Python,因为它可以帮助我回答小问题

时间:2023-04-27 23:32:14浏览次数:37  
标签:帮助 骰子 dice Python 代码 num 喜欢 distribution sides

5-10 行代码可能非常有用

一遍又一遍,我看到这个教训适用。只需几行 Python 就可以让我的生活更轻松或回答一个简单的问题。

养成用代码快速回答自己的好奇心的习惯。它将使您成为更好的开发人员,并且您会在此过程中获得很多乐趣!

骰子分布

今天早上,我在想棋盘游戏。

在这个游戏中,您掷两个骰子。两个骰子的总和会影响游戏接下来发生的事情。(游戏并不是很重要。我只是在考虑两个骰子的结果。)

我想知道——从统计学上来说——当掷两个骰子时掷出给定值的概率是多少?

这是一个已经回答过很多次的问题。我确定我可以搜索互联网并快速找到答案。

相反,我花了几分钟试图用 Python 自己回答这个问题!

我的结果

我喜欢 Python 的一点是,当您编写一个小的、一次性的脚本时,它不需要是完美的。

你可以只写几行乱七八糟的代码,完成工作,然后继续。它是用于快速脚本完成任务或回答简单问题的终极编程语言。

基本上,我使用一些嵌套的 for 循环来组合两个骰子。然后,我会记录我看到该值的次数。

在结束时dice_distribution(),我将这些计数转换为百分比。

如果你想研究它,这里是全部的的代码。

def dice_distribution(num_sides: int) -> dict[int, float]:
    """
    Get the distribution of possible results of two thrown dice
    """
    distribution = {}
    for x in dice_generator(num_sides):
        for y in dice_generator(num_sides):
            value = x + y
            distribution.setdefault(value, 0)
            distribution[value] += 1

    num_possibilities = num_sides ** 2
    distribution = {k: round((v / num_possibilities), 2) for k, v in distribution.items()}

    print(distribution)


def dice_generator(num_sides: int):
    for side in range(1, num_sides+1):
        yield side

dice_distribution(6)

答案

结果如下:

image.png

如何阅读这本词典:

  • 字典的键是掷骰子的总值
  • 字典的值是滚动那个数字的概率

所以,你有 3% 的机会掷出 2。

你有 17% 的几率掷出 7。

字典结果检测

我承认在开发这个解决方案时,我去了 anydice.com 看看我的答案是否正确。

image.png

当我从网上看到的代码中发现错误时,我做了一些更改。

为什么?

在这一点上,我显然不仅仅是为了知道这个问题的答案而编写代码。答案就在我面前,而且格式更易读。

我出于好奇而编码。一种与生俱来的愿望,即在我的脑海中找出计算结果并正确映射问题。这是一种有趣的感觉,几乎就像解决难题或脑筋急转弯一样。

这种感觉就是我喜欢编码的原因。

如果您也有同感,那么在周一早上花 15 分钟来完成像这样的好奇心小项目,只是为了让您对代码保持学习、投入和兴奋。

每日清单

喜欢你在这里读到的吗?我每天早上为 2,000 名软件开发人员写一些新东西。

如果你喜欢我的文章,点赞,关注,转发!

标签:帮助,骰子,dice,Python,代码,num,喜欢,distribution,sides
From: https://blog.51cto.com/u_12409319/6232515

相关文章

  • python的设计模式
    设计模式目录设计模式一、什么是设计模式二、python实现设计模式创建型模式1.单例模式2.工厂模式一、什么是设计模式软件工程中,设计模式是指软件设计问题的推荐方案。设计模式一般是描述如何组织代码和使用最佳实践来解决常见的设计问题。需要记住一点:设计模式是高层次的方案,并......
  • python逻辑运算 and、or
    and运算符xandyand两端的操作数,如果左侧已知为False的话,则不判断右侧,并以左侧操作数的值作为整体表达式的值and两端的操作数,如果左侧判断为True的话,则继续判断右侧,并以右侧操作数的值作为整体表达式的值1and2and3#31and0and3#0   直到找到0跳出,否则一直找到......
  • Python_14 接口测试报告
    一、查缺补漏 1.测试用例要复制到pycharm执行的项目中,才能显示 2.函数用下划线,类用大驼峰 3.pycharm一行显示(不换行): File->settings->Editor->General->Console中把Usesoftwrapsin取消 4.设置成unittest在File->settings->Tools->PythonIntegratedTools->Test......
  • 【牛客编程题】Python机器学习(入门例题5题)
    【牛客编程题】Python机器学习(入门例题5题)做题链接:https://www.nowcoder.com/exam/oj?page=1&tab=Python篇&topicId=329文章目录AI1鸢尾花分类_1AI2鸢尾花分类_2AI3决策树的生成与训练-信息熵的计算AI4决策树的生成与训练-信息增益AI5使用梯度下降对逻辑回归进行训练AI1鸢尾......
  • User installations are disabled via policy on the machine. 安装python
    Userinstallationsaredisabledviapolicyonthemachine. 解决办法1、在运行里输入gpedit.msc;(grouppolicy)组策略2、计算机配置管理>>管理模板>>windows组件>>windowsInstaller>>禁止用户安装;3、打开它禁用此项就可以了。    ......
  • Python字符串比较
    python中的字符串之间比较是依次比较每个字符的原始值(ordinalvalue)的大小,可以使用ord0方法查看某个字符的原始值,直到两个字符串中的字符不相等时,后续字符将不再被比较print('xnjilhntm'=='xnjilhntm')#Trueprint('xnjilhntm'<'xnjilhntz')#True   ord('m') 109,ord('z......
  • Python学习笔记
    第二章变量和简单数据类型2.1字符串2.1.1使用方法修改字符串的大小写str.title():以首字母大写显示每个单词str.upper():字符串全部改成大写str.lower():字符串全部改成小写2.1.2删除空白str.rstrip():删除字符串末尾的空白str.lstrip():删除字符串开头的空白str.strip():......
  • 在线设计Tkinter界面,生成Python代码,Tkinter布局助手,拖拽生成界面,tkinter designer,可视
    设计地址:https://www.pytk.net/tkinter-helper/? 运行演示  教程地址:https://www.pytk.net/tkinter.html 常用演示"""本代码由[Tkinter布局助手]生成当前版本:3.2.4官网:https://www.pytk.net/tkinter-helperQQ交流群:788392508"""fromtkinterimportmessag......
  • python+playwright 学习-59 设置默认允许麦克风和摄像头等权限
    前言有些场景在使用的时候,会弹出一些权限框,比如麦克风和摄像头等,通过监听alert是没法捕获的。正确做法是给浏览器设置默认允许麦克风和摄像头等权限,不让弹窗出来。使用context的grant_permissions方法加权限。权限框弹窗示例这种弹窗是权限窗,不是alert解决办法contex......
  • python 连接数据库
    使用pymysql连接数据库importpymysqlconn=pymysql.connect(host="10.00.0.00",port=31379,user="root",password="123456",database="acc_test")#模拟从数据库获取单个字段值withconn.cursor()ascursor:#获取【......