自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 每日10行代码125: 用python计算快乐8一等奖的中奖概率

先简单介绍下快乐8一等奖的规则:投注人中80个数中选10个,开奖时会从80个数中开出20个,如果选择的10个数均在开出的20个数中,那么就是中一等奖(也叫选十中十)。那么中一等奖的概率是多少呢?这其实是数学中的概率问题。解题方法:选求所有可能的投注情况,也就是从80个中选10个,这是一个标准的组合问题,结果是:1646492110120可以用网上的组合计算器来计算:https://zh.numberempire.com/combinatorialcalculator.php再求出所有可能中一等奖彩票

2021-02-28 16:07:41 22701 3

原创 每日10行代码124: 编写高质量python代码的方法50:用包来安排模块,并提供稳固的API

程序的代码量变大之后,我们自然就需要重新调整其结构。我们会把大函数分割成小函数,会把某些数据结构重构为辅助类(参见该书第22条),也会把功能分散到多个相互依赖的模块之中。到了一定的阶段,我们就会发现,模块的数量实在太多了,于是,我们就需要在程序之中引进一种抽象层,舍不得代码更加便于理解。Python 的包 package 就可以充当这样的抽象层。包,是一种含有其他模块的模块。在大多数情况下,我们会给目录中放入名为 __init__.py 的空文件,并以些来定义包。只要目录里面有 __init__.py

2021-02-23 16:30:09 103

原创 每日10行代码123: 编写高质量python代码的方法49:为每个函数、类和模块编写文档字符串

由于Python 是一门动态语言,所以文档显得极其重要。Python 对文档提供了内置的支持,使得开发者可以把文档与代码块关联起来。与其他许多编程语言不同,Python程序在运行的时候,能够直接访问源代码中的文档信息。例如:在为函数编写了def 语句之后,我们可以紧接着提供 docstring, 以便将一段开发文档与该函数关联起来:def palindrome(word): """Return True if the given word is a palindrome.""" retu

2021-02-20 15:15:13 185

原创 每日10行代码122: 编写高质量python代码的方法47:在重视精确度的场合,应该使用 decimal

Python 语言很合适用来编写与数值型数据打交道的代码。Python 的整数类型,可以表达任意长度的值,其双精度浮点数类型,也遵循 IEEE 754 标准。此外,Python 还提供了标准复数类型,用来表示虚数值。然而这引起数值类型,并不能覆盖每一种情况。例如,要根据通话时长和费率,来计算打电话费。假如用户打了3分42秒,打国际长途,每分钟1.45元,那么通话费是多少呢?rate = 1.45seconds = 3*60 + 42cost = rate*seconds / 60print(cos

2021-02-18 16:40:02 126

原创 每日10行代码121: 编写高质量python代码的方法24:以@classmethod 形式的多态去通用地构建对象

在 Python 中,不仅对象支持多态,类也支持多态。那么,类的多态是什么意思?它又有什么样的好处?多态,使得继承体系中的多个类都能以各自所独有的方式来实现某个方法。这些类,都满足相同的接口和继承自相同的抽象类,但却有着各自不同的功能(关于多态的范例,参考该书第28条)。例如,为了实现一套 MapReduce 流程,我们需要定义公共基类来表示输入的数据。下面这段代码就定义了这样的基类,它的read方法必须由子类来实现:...

2021-02-18 11:32:34 163 5

原创 每日10行代码120: 编写高质量python代码的方法23:简单的接口应该接受函数,而不是类的实例

python 有许多内置的 API ,都允许调用者传入函数,以定制其行为。API在招待的时候,会通过这些挂钩(hook)函数, 回调函数内的代码。例如,list 类型的 sort 方法接受可选的 key 参数,用以指定每个索引位置上的值之间该如何排序。 下面这段代码,用 lambda 表达式充当key挂钩,以便根据每个名字的长度来排序:names = ['Socrates', 'Archimedes', 'Plato', 'Aristotle']names.sort(key=lambda x:len(x

2021-02-16 22:12:40 165 2

原创 每日10行代码119: 编写高质量python代码的方法22:尽量用辅助类来维护程序的状态,而不要用字典和元组

python内置的字典类型可以很好地保存某个对象在其生命周期里的动态内部状态。所谓动态(dynamic),是指这些待保存的信息,其标志符无法提前获知。例如,要把许多学生的成绩记录下来,但这些学生的名字,我们事先并不知道。于是,可以定义一个类,把学生名字字典里面,这样就不用把每个学生都表示成对象了,也无需在每个对象中预设一个存放其名字的属性。...

2021-02-13 10:52:12 189 1

原创 每日10行代码118: 编写高质量python代码的方法21:用只能以关键字形式指定的参数来确保代码明晰

按关键字传递参数,是python函数的一项强大特性,参见:(https://blog.csdn.net/weixin_44981444/article/details/113738138)由于关键字参数很灵活,所以在编写代码时,可以把函数的用法表达得更加明确。例如,要计算两数相除的结果,同时 要对计算时的特殊情况进行小心的处理。有时我们想忽略 ZeroDivisionError异常并返回无穷。有时又想忽略 OverflowError异常并返回0.def safe_division(number, di

2021-02-10 16:15:16 84 1

原创 每日10行代码117: 编写高质量python代码的方法20:用None和文档字符串来描述具有动态默认值的参数

有时我们想采用一种非静态的类型,来做关键字参数的默认值。例如,在打印日志消息的时候,要把相关事件的记录时间也标注在这条消息中。默认情况下,消息里面所包含的时间,应该是调用log函数那一刻的时间。如果我们以为参数的默认值会在每次执行函数时得到评估,那可能会写出下面这种代码:from datetime import datetimefrom time import sleepdef log(message, when=datetime.now()): print('%s: %s' %(when,

2021-02-10 11:26:24 127 1

原创 每日10行代码116: 编写高质量python代码的方法19:用关键字参数来表达可选的行为

与其他编程语言一样,调用python函数时,可以按位置传递参数。def remainder(number, divisor): return number % divisorassert remainder(20,7) ==6 python中所有的位置参数,都可以按关键字传递。关键字参数的顺序不限,但位置参数必须在关键字参数之前。remainder(20,divisor = 7)remainder(number =20,divisor=7)remainder(divisor=7,nu

2021-02-07 15:54:38 96

原创 每日10行代码115: 编写高质量python代码的方法18:用数量可变的位置参数减少视觉杂讯

令函数接受可选的位置参数(由于这种参数习惯上写为 *args, 所以又称为star args,星号参数),能够使代码更加清晰,并能减少视觉干扰。例如,要定义log(日志, 不是对数)函数,以便把某些调试信息打印出来。假如该函数的参数个数固定不变,那它就必须接受一段信息及一份含有待打印值的列表。def log(message,values): if not values: print(message) else: values_str = ', '.join

2021-02-05 11:21:55 79

原创 每日10行代码114:用python根据excel的明细数据自动创建建表语句

背景:如果想把excel类型的明细数据导入数据库的话,第一步一般都是先建表,但是建表其实是一个挺繁琐的事,尤其是在数据列非常多的情况下,需要为每一列选择一个合适的名称,再选择一个合适的数据类型。我的工作中经常遇到类似的问题,在网上找了下,也没有合适的解决方案,pandas里的to_sql倒是可以自动建表并插入数据,但有时选择的数据类型也不太合适,会有bug。另外看到一个兄弟写的文章https://blog.csdn.net/ltg01/article/details/48422145 但这个里面用的是

2021-02-03 16:36:36 796

原创 每日10行代码113: oracle里通过存储过程实现drop table if exists

今天使用oracle,发现里面没有drop table if exists 对应的语句,要实现这个语句需要自己写代码来实现:create or replace procedure droptable(tname in varchar2) is num Number;begin select count(1) into num from user_tables WHERE table_name = upper(tname); if num>0 then execute immed

2021-02-02 18:02:28 795

原创 每日10行代码112:python获取excel列的列名,列数据,最大长度,列名首字母,是否是数值列等列相关信息

在使用openpyxl时,感觉到这个包对列的封装很少,使用起来不太方便。为了方便托克托,import openpyxlfrom openpyxl.utils import get_column_letter,column_index_from_stringimport pinyinimport datetimeimport redef getStrAllAplha(str): return pinyin.get_initial(str, delimiter="").upper()

2021-02-01 23:32:02 861 2

原创 kettle点击“输入字段映射”报错“没有指定的数据库表,不能找到需要的字段”的解决办法

这两天需要用excel把数据导入到oracle数据库,自己导入有时候会出点问题,于是就想到用一下工具,etl工具方面出名的就是kettle了,但是在试用时出了一个问题就是在表输出的步骤点击“输入字段映射”报错“没有指定的数据库表,不能找到需要的字段”英语是it wa not possible to retrieve the target fields for this step because of an error:unable to determine the required fields

2021-02-01 17:16:59 5225 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除