学习书籍专题 :01-【python 自动化任务】 python 基础 【1-6章】
-------------------------------------------------------------------------------------------------------------------------------------------------
1.变量名是区分大小写的 变量官方风格 looking_like_this 而不是驼峰形式lookLikeThis 。变量最好具有描述性的名字。
2.操作符 (+、-、*、/、//(取商)、%(取余)和**是数学操作符,+和*是字符串操作符)。数学操作符()、比较操作符号(6个)、布尔操作符(and or not)
3.数据类型 整形 浮点型 字符串 布尔型(True 和 False)
4.python 的内建函数 内置函数
5.sys.exit() 终止整个程序
6.传入sep参数,改变默认的
>>> print('cats', 'dogs', 'mice', sep=',')
cats,dogs,mice
7.全局变量
在所有函数之外赋值的变量,属于“全局作用域”。局部变量不能在全局作用域内使用。
全局作用域中的代码不能使用任何局部变量;但是,局部作用域可以访问全局变量。
要想生活简单,就要避免局部变量与全局变量或其他局部变量同名。
8.函数内定义全局变量
如果需要在一个函数内修改全局变量,就使用 global 语句。
def spam():
global eggs
eggs = 'spam'
eggs = 'fish'
spam()
print(eggs)
结果 spam
def spam():
global eggs
eggs = 'spam' # this is the global
def bacon():
eggs = 'bacon' # this is a local
def ham():
print(eggs) # this is the global
eggs = 42 # this is the global
spam()
print(eggs)
结果 spam
9.函数的输入值
函数的输入值是输入值(变元)
10.加号可以连接列表
+操作符可以连接两个列表,得到一个新列表
*操作符可以用于一个列表和一个整数,实现列表的复制
11.利用 in 和 not in 操作符,可以确定一个值否在列表中
12.每种数据类型都有它自己的一组方法
13.查找列表的索引值
列表值有一个 index()方法,可以传入一个值,如果该值存在于列表中,就返回它
的下标。如果该值不在列表中,Python 就报 ValueError。
14.列表插入值
前面的 append()方法调用,将参数添加到列表末尾。insert()方法可以在列表任意下标处插入一个值。
15.列表值的删除和排序
del spam[2];remove('bat')
spam.sort(reverse=True)
spam.sort(key=str.lower) 区分大小写
16.续行字符
续行字符\,将一条指令写成多行
字符串是“不可变的”,它不能被更改。尝试对字符串中的一个字符重新赋值,将导致 TypeError 错误。
17.元组
元组是不可变的。
函数 list()和 tuple()将返回传递给它们的值的列表和元组版本。
对于不可变的数据类型的值,例如字符串、整型或元组,Python变量就保存值本身。
在变量必须保存可变数据类型的值时,例如列表或字典,Python 就使用引用。
如果元组中只有一个整数值42,如何输入该元组? spam=(42,) 末尾的逗号是必须的。
18.引用
函数传递参数是传递引用,要理解参数如何传递给函数,引用就特别重要
在处理列表和字典时;dict.copy(),copy.deepcopy(spam)深拷贝,不会改变原来的值。直接复制 则会改变原来的值。spam[:]和.copy 和 copy.deepcopy()都不会改变。
a=spam 才会同时改变
import copy
spam=['A', 'B', 'C', 'D']
cheese = copy.deepcopy(spam)
cheese[1] = 42
print(spam)
print(cheese)
19.其他操作
2.如何将'hello'赋给列表的第三个值,而列表保存在名为 spam 的变量中?(假定变量包含[2, 4, 6, 8, 10])。
spam=[2, 4, 6, 8, 10]
spam.insert(2,'hello')
print(spam)
20.输出技巧
grid = [['.', '.', '.', '.', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['O', 'O', 'O', 'O', 'O', '.'],
['.', 'O', 'O', 'O', 'O', 'O'],
['O', 'O', 'O', 'O', 'O', '.'],
['O', 'O', 'O', 'O', '.', '.'],
['.', 'O', 'O', '.', '.', '.'],
['.', '.', '.', '.', '.', '.']]
list_len=len(grid)
list_col=len(grid[0])
for i in range(list_col):
for j in range(list_len):
print(grid[j][i],end='')
print()
..OO.OO..
.OOOOOOO.
.OOOOOOO.
..OOOOO..
...OOO...
....O....
print 函数的相关参数介绍 :https://blog.youkuaiyun.com/phantom_dapeng/article/details/77758271
print() 和 print("\n") 是不同的
21.字典
两个键值对内容相同的字典,如果顺序不同,但两个字典仍然是相等的。列表元素相同,如顺序不同 ,则列表的顺序是不同的。
两个错误。字典 尝试访问字典中不存在的键,将导致 KeyError 出错信息。类似列表的 列表的“越界”IndexError 出错信息。
用in判断,键是否在字典里。
birthdays = {'Alice': 'Apr 1', 'Bob': 'Dec 12', 'Carol': 'Mar 4'}
while True:
print('Enter a name: (blank to quit)')
name = input()
if name == '':
break
if name in birthdays:
print(birthdays[name] + ' is the birthday of ' + name)
else:
print('I do not have birthday information for ' + name)
print('What is their birthday?')
有 3 个字典方法,它们将返回类似列表的值,分别对应于字典的键、值和键-值对:keys()、values()和 items()。
表达式'cat' in spam 和'cat' in spam.values()之间是没有区别的,都是检查一个值是不是字典中的一个键。
items()方法打印的值是元组。
for i in spam.items():
print(i)
结果
('color', 'red')
('age', 42)
22. in 和 not in
in 和 not in 都可以用来判断列表元素和字典的键是否在列表和字典中。
23.字典的get 方法
picnicItems = {'apples': 5, 'cups': 2}
print( 'I am bringing ' + str(picnicItems.get('cups', 0)) + ' cups.')
print()
print('I am bringing ' + str(picnicItems.get('eggs', 0)) + ' eggs.')
allGuests = {'Alice': {'apples': 5, 'pretzels': 12},
'Bob': {'ham sandwiches': 3, 'apples': 2},
'Carol': {'cups': 3, 'apple pies': 1}}
def totalBrought(guests, item):
numBrought = 0
for k, v in guests.items():
print(v)
numBrought = numBrought + v.get(item, 0)
return numBrought
print(' - Apples ' + str(totalBrought(allGuests, 'apples')))
24.字典的setdefault()方法
传递给该方法的第一个参数,是要检查的键。第二个参数,是如果该键不存在时要设置的值。如果该键
确实存在,方法就会返回键的值。
message = 'It was a bright cold day in April, and the clocks were striking thirteen.'
count = {}
for character in message:
count.setdefault(character, 0)
count[character] = count[character] + 1
print(count)
25.python3 的漂亮打印
pprint 模块,就可以使用 pprint()和 pformat()函数
26.字典的键
字典不是只能使用整数下标,而是可以用各种数据类型作为键:整型、浮点型、字符串或元组。
#-----------------------------------第6章字符串的相关操作---------------------------------------------------
27.斜杠/ 反斜杠\
加单引号: spam = 'Say hi to Bob\'s mother.'
可以用双引号: spam = "That is Alice's cat."
\' 单引号
\" 双引号
\t 制表符
\n 换行符
\\ 倒斜杠
3个单引号的多行字符定义、输出、或注释。 3个双引号 成对出现可以做多行 注释
28.字符串的小标和切片
字符串可以用下标和切片,也可以用 in 和 not in
29.字符串的其他函数
upper()、lower()、isupper()和 islower()
spam.upper() 只是视图
spam = spam.upper() 改变了原字符串
字符串函数用来 处理多种用户输入情况或输入错误,诸如大小写不一致,这会让程序更容易使用,且更不容易失效。
其他函数:用的少 返回True 和 False
isalpha()返回True,如果字符串只包含字母,并且非空;
isalnum()返回True,如果字符串只包含字母和数字,并且非空;
isdecimal()返回True,如果字符串只包含数字字符,并且非空;
isspace()返回True,如果字符串只包含空格、制表符和换行,并且非空;
istitle()返回True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词;
startswith()和endswith()判断字符串的开始和结尾。
30.字符串的常用函数
字符串方法 join()和 split()
join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串列表。返回的字符串由传入的列表中每个字符串连接而成。
并且传入一个列表值(很容易不小心用其他的方式调用它)
', '.join(['cats', 'rats', 'bats']) 结果'cats, rats, bats'
split()方法
spam = '''Dear Alice''';spam.split('\n')
用 rjust()、ljust()和 center()方法对齐文本
str.rjust(width[, fillchar]) 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串。如果指定的长度小于字符串的长度则返回原字符串
'Hello World'.rjust(20) 结果 ' Hello World'
常用字符串函数二:
用 strip()、rstrip()和 lstrip()删除空白字符;strip()字符串方法将返回一个新的字符串,它的开头或末尾都没有空白字符。
lstrip()和 rstrip()方法将相应删除左边或右边的空白字符
还可以删除指定的字符
spam = 'SpamSpamBaconSpamEggsSpamSpam'
spam.strip('ampS')
'BaconSpamEggs'
31.用 pyperclip 模块拷贝粘贴字符串
import pyperclip
pyperclip.copy('Hello world!')
pyperclip.paste()
如果你的程序之外的某个程序改变了剪贴板的内容,paste()函数就会返回它。
32.简单的口令保管箱
#! python3
# pw.py - An insecure password locker program.
import sys, pyperclip
PASSWORDS = {'email': 'F7minlBDDuvMJuxESSKHFhTxFtjVB6',
'blog': 'VmALvQyKAxiVH5G8v01if1MLZF3sdt',
'luggage': '12345'}
if len(sys.argv) < 2:
print('Usage: py pw.py [account] - copy account password')
sys.exit()
account = sys.argv[1] # first command line arg is the account name
if account in PASSWORDS:
pyperclip.copy(PASSWORDS[account])
print('Password for ' + account + ' copied to clipboard.')
else:
print('There is no account named ' + account)
33.sys.argv
sys.argv 列表中的第一项总是一个字符串,它包含程序的文件名
('pw.py')。第二项应该是第一个命令行参数。
34.导数 微分 积分 不定积分 定积分
微积分包括微分和积分,积分包括不定积分和定积分。
导数(两个微分的商,Δy与自变量增量Δx比值在Δx趋于0时的极限,函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率
导数的本质是通过极限的概念对函数进行局部的线性逼近。导数的几何意义是连续函数上所有点的切线的斜率构成的函数) f'(x)=dy/dx
微分(当dx靠近自己时,函数在dx处的极限叫作函数在dx处的微分) dy=f'(x)dx
积分
不定积分(无上下界 求原函数) 一个函数,可以存在不定积分,而不存在定积分;也可以存在定积分,而不存在不定积分
定积分(有上下界,结果是常数。几何意义 是被积函数与坐标轴围成的面积。数学意义 和式极限)
导数:f'(x)=dy/dx 导数也叫做微商(两个微分的商)
微分:dy=f'(x)dx
积分:求积分的过程,与求导的过程正好是逆过程;
求一个函数f(x)的不定积分,就是要求出一个原函数F(x),使得F'(x)=f(x),
而F(x)+C(C为任意常数)就是不定积分∫f'(x)dx的所有原函数,不定积分其实就是这个表达式:∫f'(x)dx
定积分:定积分与不定积分的区别是,定积分有上下限,∫(a,b)f'(x)dx 而不定积分是没有上下限的,
因而不定积分的结果往往是个函数,定积分的结果则是个常数
前300-200:阿基米德 伟大的古希腊哲学家、百科式科学家、数学家、物理学家、力学家,静态力学和流体静力学的奠基人
17世纪:牛顿、莱布尼茨
18世纪:达朗贝尔 导数公式
高斯 德国著名数学家、物理学家、天文学家、几何学家,大地测量学家。
19世纪:柯西
35.字符串小例子
'-'.join('There can be only one.'.split();从左往右运算。
['T_h_e_r_e_', '_c_a_n_', '_b_e_', '_o_n_l_y_', '_o_n_e_.']
对齐打印,需记录每个字符串的长度
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
def printTable(tabledata):
len_list = [0,0,0]
for index, item in enumerate(tableData):
#print( index, item)
for str in item:
if len(str) > len_list[index]:
len_list[index] = len(str)
for seq in range(len(tableData[0])):
#print("seq",seq)
print(tableData[0][seq].rjust(len_list[0]),
tableData[1][seq].rjust(len_list[1]),
tableData[2][seq].rjust(len_list[2])
)
printTable(tableData)