【本文的我,是一个文科财务工作者。在单位信息化全靠人做的年代,确实工作压力大也忙不过来。9102年的我,深感不学习点新知识迟早要被淘汰。所以今天开始记录自己的python小白笔记,各位见笑。】

编程基础部分笔记:《python编程快速上手-让繁琐工作自动化》,AI Sweigart,人民邮电出版社

day4 python编程基础(2)

CH3 函数

1.自定义函数

def hello():

print('Howdy!')

print('Howdy!!!')

print('Hello there.')

hello()

第一行是 def 语句,它定义了一个名为 hello()的函数。 def 语句之后的代码块是函数体。这段代码在函数调用时执行,而不是在函数第一次定义时执行。函数之后的 hello()语句行是函数调用。

(1)def 语句和参数

如果调用 print()或 len()函数, 你会传入一些值,放在括号之间, 在这里称为“参数”。有一个名为 name 的变元。“变元” 是一个变量, 当函数被调用时, 参数就存放在其中。

def hello(name):

print('Hello ' + name)

hello('Alice')

hello('Bob')

(2)返回值和 return 语句

用 def 语句创建函数时, 可以用 return 语句指定应该返回什么值。

import random

def getAnswer(answerNumber):

if answerNumber == 1:

return 'It is certain'

else:

return 'Very doubtful'

r = random.randint(1, 9)

fortune = getAnswer(r)

print(fortune)

请注意,因为可以将返回值作为参数传递给另一个函数调用,所以你可以将最后三行缩写成一行等价的代码:

print(getAnswer(random.randint(1, 9)))

(3)None 值

如果你希望变量中存储的东西不会与一个真正的值混淆,这个没有值的值就可能有用。有一个使用 None 的地方就是 print()的返回值。 print()函数在屏幕上显示文本, 但它不需要返回任何值,那么 print()就返回 None。

(4)关键字参数和 print()

这两个字符串出现在独立的两行中,因为 print()函数自动在传入的字符串末尾添加了换行符。但是,可以设置 end 关键字参数,将它变成另一个字符串。

print('Hello', end='')

print('World')

HelloWorld

传入 sep 关键字参数, 替换掉默认的分隔字符串(空格)。在交互式环境中输入以下代码:

print('cats', 'dogs', 'mice', sep=',')

cats,dogs,mice

2.全局变量和局部变量

处于局部作用域的变量,被称为“局部变量”。处于全局作用域的变量,被称为“全局变量”。

虽然在小程序中使用全局变量没有太大问题,但当程序变得越来越大时, 依赖全局变量就是一个坏习惯。

重要原则:

全局作用域中的代码不能使用任何局部变量;

但是,局部作用域可以访问全局变量;

一个函数的局部作用域中的代码,不能使用其他局部作用域中的变量。

如果在不同的作用域中,你可以用相同的名字命名不同的变量。也就是说,可以有一个名为 spam 的局部变量,和一个名为 spam 的全局变量。

(1)global 语句

如果需要在一个函数内修改全局变量,就使用 global 语句。如果在函数的顶部有 global eggs 这样的代码

(2)异常处理

错误可以由 try 和 except 语句来处理。那些可能出错的语句被放在 try 子句中。如果错误发生,程序执行就转到接下来的 except 子句开始处。可以将前面除数为零的代码放在一个 try 子句中,让 except 子句包含代码,来处理该错误发生时应该做的事。

def spam(divideBy):

try:

return 42 / divideBy

except ZeroDivisionError:

print('Error: Invalid argument.')

print(spam(2))

print(spam(12))

print(spam(0))

print(spam(1))

ch4 列表

1.列表数据类型

列表”是一个值, 它包含多个字构成的序列。列表值看起来像这样: ['cat', 'bat', 'rat', 'elephant']。

(1)用下标取得列表中的单个值

image.png

列表也可以包含其他列表值。这些列表的列表中的值,可以通过多重下标来访问,第一个下标表明使用哪个列表值,第二个下标表明该列表值中的值。 像这样:

>>> spam = [['cat', 'bat'], [10, 20, 30, 40, 50]]

>>> spam[0][1]

'bat'

>>> spam[1][4]

50

(2)负数下标

整数值−1 指的是列表中的最后一个下标, −2 指的是列表中倒数第二个下标, 以此类推。

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[-1]

'elephant'

(3)利用切片取得子列表

“切片”可以从列表中取得多个值,结果是一个新列表。

spam[1:4]是一个列表和切片(两个整数)。第一个整数是切片开始处的下标。第二个整数是切片结束处的下标。切片向上增长,直至第二个下标的值,但不包括它。

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[1:3]

['bat', 'rat']

>>> spam[0:-1]

['cat', 'bat', 'rat']

作为快捷方法,你可以省略切片中冒号两边的一个下标或两个下标。省略第一个下标相当于使用 0, 或列表的开始。省略第二个下标相当于使用列表的长度, 意味着分片直至列表的末尾。

>>> spam[1:]

['bat', 'rat', 'elephant']

(4)用下标改变列表中的值

也可以使用列表的下标来改变下标处的值。例如, spam[1] = 'aardvark'意味着“将列表 spam 下标 1 处的值赋值为字符串'aardvark'。

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam[1] = 'aardvark'

>>> spam

['cat', 'aardvark', 'rat', 'elephant']

(5)列表连接和列表复制

+操作符可以连接两个列表, 得到一个新列表,*操作符可以用于一个列表和一个整数,实现列表的复制。

>>> [1, 2, 3] + ['A', 'B', 'C']

[1, 2, 3, 'A', 'B', 'C']

>>> ['X', 'Y', 'Z'] * 3

['X', 'Y', 'Z', 'X', 'Y', 'Z', 'X', 'Y', 'Z']

>>> spam = [1, 2, 3]

>>> spam = spam + ['A', 'B', 'C']

>>> spam

[1, 2, 3, 'A', 'B', 'C']

(6)用 del 语句从列表中删除值

del 语句将删除列表中下标处的值, 表中被删除值后面的所有值, 都将向前移动一个下标。

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> del spam[2]

>>> spam

['cat', 'bat', 'elephant']

>>> del spam[2]

>>> spam

['cat', 'bat']

(7)用 len()取得列表的长度

len()函数将返回传递给它的列表中值的个数, 就像它能计算字符串中字符的个数一样。

>>> spam = ['cat', 'dog', 'moose']

>>> len(spam)

3

2.使用列表

使用列表的好处在于,现在数据放在一个结构中,所以程序能够更灵活的处理数据,比放在一些重复的变量中方便。

(1)列表用于循环

一个常见的 Python 技巧, 是在 for 循环中使用 range(len(someList)), 迭代列表的每一个下标。

>>> supplies = ['pens', 'staplers', 'flame-throwers', 'binders']

>>> for i in range(len(supplies)):

print('Index ' + str(i) + ' in supplies is: ' + supplies[i])

Index 0 in supplies is: pens

Index 1 in supplies is: staplers

Index 2 in supplies is: flame-throwers

Index 3 in supplies is: binders

(2)in 和 not in 操作符

利用 in 和 not in 操作符, 可以确定一个值否在列表中。 连接两个值: 一个要在列表中查找的值, 以及待查找的列表。这些表达式将求值为布尔值。

>>> 'howdy' in ['hello', 'hi', 'howdy', 'heyas']

True

>>> spam = ['hello', 'hi', 'howdy', 'heyas']

>>> 'cat' in spam

False

(3)多重赋值技巧

多重赋值技巧是一种快捷方式,让你在一行代码中,用列表中的值为多个变量赋值。

>>> cat = ['fat', 'black', 'loud']

>>> size, color, disposition = cat

(4)增强的赋值操作

针对+、 -、 *、 /和%操作符, 都有增强的赋值操作符, 如表 4-1 所示。

image.png

3.方法

(1)用 index()方法在列表中查找值

列表值有一个 index()方法, 可以传入一个值, 如果该值存在于列表中, 就返回它的下标。如果该值不在列表中, Python 就报 ValueError。如果列表中存在重复的值,就返回它第一次出现的下标。

>>> spam = ['hello', 'hi', 'howdy', 'heyas']

>>> spam.index('hello')

0

>>> spam.index('howdy howdy howdy')

Traceback (most recent call last):

File "", line 1, in

spam.index('howdy howdy howdy')

ValueError: 'howdy howdy howdy' is not in list

(2)用 append()和 insert()方法在列表中添加值

要在列表中添加新值, 就使用 append()和 insert()方法。前面的 append()方法调用, 将参数添加到列表末尾。 insert()方法可以在列表任意下标处插入一个值。 insert()方法的第一个参数是新值的下标, 第二个参数是要插入的新值。

>>> spam = ['cat', 'dog', 'bat']

>>> spam.append('moose')

>>> spam

['cat', 'dog', 'bat', 'moose']

>>> spam = ['cat', 'dog', 'bat']

>>> spam.insert(1, 'chicken')

>>> spam

['cat', 'chicken', 'dog', 'bat']

请注意, 代码是 spam.append('moose')和 spam.insert(1, 'chicken'),而不是 spam =spam.append('moose')和 spam = spam.insert(1, 'chicken')。

方法属于单个数据类型。 append()和 insert()方法是列表方法, 只能在列表上调用, 不能在其他值上调用,

(3)用 remove()方法从列表中删除值

给 remove()方法传入一个值,它将从被调用的列表中删除。

>>> spam = ['cat', 'bat', 'rat', 'elephant']

>>> spam.remove('bat')

>>> spam

['cat', 'rat', 'elephant']

如果该值在列表中出现多次,只有第一次出现的值会被删除。

如果知道想要删除的值在列表中的下标, del 语句就很好用。如果知道想要从列表中删除的值, remove()方法就很好用。

(4)用 sort()方法将列表中的值排序

数值的列表或字符串的列表, 能用 sort()方法排序。也可以指定 reverse 关键字参数为 True, 让 sort()按逆序排序。

>>> spam = ['ants', 'cats', 'dogs', 'badgers', 'elephants']

>>> spam.sort()

>>> spam

['ants', 'badgers', 'cats', 'dogs', 'elephants']

>>> spam.sort(reverse=True)

>>> spam

['elephants', 'dogs', 'cats', 'badgers', 'ants']

关于 sort()方法,你应该注意 3 件事。

首先, sort()方法当场对列表排序。不要写出 spam = spam.sort()这样的代码,试图记录返回值。

其次,不能对既有数字又有字符串值的列表排序,因为 Python 不知道如何比较它们。

第三, sort()方法对字符串排序时, 使用“ASCII 字符顺序”, 而不是实际的字典顺序。这意味着大写字母排在小写字母之前。因此在排序时, 小写的 a 在大写的Z 之后。

5.类似列表的类型:字符串和元组

列表并不是唯一表示序列值的数据类型。例如,字符串和列表实际上很相似,只要你认为字符串是单个文本字符的列表。对列表的许多操作,也可以作用于字符串:按下标取值、 切片、用于 for 循环、 用于 len(), 以及用于 in 和 not in 操作符。

(1)可变和不可变数据类型

但列表和字符串在一个重要的方面是不同的。列表是“可变的”数据类型,它的值可以添加、删除或改变。但是,字符串是“不可变的”, 它不能被更改。

(2)元组数据类型

首先,元组输入时用圆括号(), 而不是用方括号[]。

但元组与列表的主要区别还在于,元组像字符串一样,是不可变的。 元组不能让它们的值被修改、添加或删除。

如果元组中只有一个值,你可以在括号内该值的后面跟上一个逗号, 表明这种情况。 否则, Python 将认为, 你只是在一个普通括号内输入了一个值。

(3)用 list()和 tuple()函数来转换类型

函数 list()和 tuple()将返回传递给它们的值的列表和元组版本。

>>> tuple(['cat', 'dog', 5])

('cat', 'dog', 5)

>>> list(('cat', 'dog', 5))

['cat', 'dog', 5]

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

如果需要元组值的一个可变版本,将元组转换成列表就很方便。

(4)引用

A.copy 模块的 copy()和 deepcopy()函数

在处理列表和字典时,尽管传递引用常常是最方便的方法,但如果函数修改了传入的列表或字典,你可能不希望这些变动影响原来的列表或字典。要做到这一点,Python 提供了名为 copy 的模块, 其中包含 copy()和 deepcopy()函数。第一个函数copy.copy(), 可以用来复制列表或字典这样的可变值, 而不只是复制引用。在交互式环境中输入以下代码:

>>> import copy

>>> spam = ['A', 'B', 'C', 'D']

>>> cheese = copy.copy(spam)

>>> cheese[1] = 42

>>> spam

['A', 'B', 'C', 'D']

>>> cheese

['A', 42, 'C', 'D']

如果要复制的列表中包含了列表, 那就使用 copy.deepcopy()函数来代替。deepcopy()函数将同时复制它们内部的列表。

python财务编程_Python笔记 财务小白的 day4 python编程基础(2)相关推荐

  1. python编程财务应用_Python笔记 财务小白的 day6 python编程基础(4)

    [转眼已到2020年.最近3个月真是成堆的压力.春节前稍微闲下来一丢丢,继续开始更新Python自学笔记.] CH6 字符串操作 1.处理字符串 (1)字符串中有引号如何处理. a.双引号 image ...

  2. python编程财务_Python笔记 财务小白的 day3 python编程基础(1)

    [本文的我,是一个文科财务工作者.在单位信息化全靠人做的年代,确实工作压力大也忙不过来.9102年的我,深感不学习点新知识迟早要被淘汰.所以今天开始记录自己的python小白笔记,各位见笑.] 编程基 ...

  3. 关于Python的一些学习笔记(小白式笔记,持续更新)

    关于Python的一些学习笔记 瞎bb: 作为一个计算机专业的学生,Python应该是一门很有必要掌握的语言,但是由于鄙人太懒,一直对Python没有太多了解,但是随着知识的积累以及学业难度的增加,我 ...

  4. python制作一个教学网站_小白如何入门Python? 制作一个网站为例

    首先最重要的问题是为什么要学习python?这个问题这个将指导你如何学习Python和学习的方式. 以你最终想制作一个网站为例.从一个通用的学习资源列表开始不仅会消磨你的激情,而且你获得的知识很难应用 ...

  5. python历史背景_python学习之旅1-1(python背景、安装介绍)

    一.python介绍 1.python历史背景 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时 ...

  6. python开发讲解_Python开发系列课程(1) - 初识Python详解

    初识Python Python简介 Python是一个很棒的语言,从它诞生的那天起,一直致力于向开发者提供同时具备可读性和生产力的多范式编程语言.曾经有人Python仅仅是一门脚本语言,不适合构建大型 ...

  7. 有哪些免费自学python的网站_Python学习网站有哪些?Python基础教程网站推荐

    Python学习网站有哪些?Python基础教程网站推荐:菜鸟教程.PHP中文网.PHP中文网.W3C.Reddit.博学谷.python中文学习大本营.Python 3 Module of the ...

  8. python语言画心_python语言还是java如何用python画爱心

    用python绘制爱心的基本步骤如下: 002pc.com对<python语言还是java如何用python画爱心>总结来说,为我们学习Python很实用. 首先先下载安装好python程 ...

  9. python自增_Python的自增运算与Python变量的浅析

    一.关于Python的自增运算 学了C/C++后再学习Python,不自觉地就打出了自增运算符++,但是发现Python解释器不认识,查了下资料,发现Python中没有这个运算符.这里暂时不探讨自增运 ...

最新文章

  1. 菜鸟的DUBBO进击之路(一):SOA构架
  2. 线段树 + 矩阵 --- ZOJ 3772 Calculate the Function
  3. 阅读笔记一之《软件需求与分析》
  4. 基于JAVA+SpringBoot+Mybatis+MYSQL的体育馆开放管理系统
  5. QQ浏览器、搜狗浏览器等兼容模式下,Asp.NetCore下,Cookie、Session失效问题
  6. iOS中控制器的实践和学习(3)-简易5图之A2
  7. 清华大学岂凡超:义原的介绍和义原的自动推荐 | AI 研习社第 76 期大讲堂
  8. 【English】20190430
  9. 测试环境搭建-7:安装loadrunner提示此计算机上缺少vc2005_sp1_with_atl_fix_redist解决方法
  10. 开源项目工时系统_GitHub - fjp203/timemaker: 定额工时管理系统
  11. 键盘连接计算机接口,终于明白电脑如何连接键盘
  12. python编写密码登录程序_python初学之用户登录的实现过程(实例讲解)
  13. cmf+ThinkPHP6.0 配置使用多应用路由
  14. Go语学习笔记 - gorm使用 - gorm处理错误 Web框架Gin(十)
  15. NOKOV度量动作捕捉用于多智能体协同系统等效验证实验
  16. 毕业论文避免查重率过高技巧
  17. 开心测试卷答案软件六下外研版,外研版英语六年级小升初测试卷含答案
  18. 大数据岗位薪资了解一下~
  19. Scrapy爬取重庆安居客二手房并存入mysql数据库(下)
  20. 从4k到42k,程序员的涨薪史看哭了

热门文章

  1. Hibernate中No row with the given identifier exis
  2. mysql jdbc驱动 批量更新_jdbc批量插入,删除,更新
  3. 基于springboot jpa驾校管理系统源码
  4. python打印自动换行如何解决,python不换行打印的方法
  5. ijkplayer源码---FFPlayer结构体4 SDL_Aout
  6. 扶贫?教育?地铁?这里有跨界也能实现的企业数字化新操作!
  7. python3ide安卓版官网下载_python3.9下载-Python下载v3.9.0 官方最新版【x86|x64】-西西软件下载...
  8. AI虚拟人物 数字人直播,不用出镜,不用露脸的直播方式(附教程 软件)
  9. u盘装linux镜像是dvd吗,使用U盘刻录镜像及解决在安装过程中找不到光盘的问题...
  10. 马云爸爸成立快一年的达摩院,究竟在做什么?