Python基础学习总结(一)
1、变量和数据类型
1.1变量
1.每个变量都存储了一个值——与变量相关联的信息。
2.变量不仅可以为整数或浮点数,还可以是字符串,可以是任意数据类型。
1.1.1变量的命名和使用
变量名只能包含字母、数字和下划线,且数字不能打头。变量名不能包含空格,但可以使用下划线间隔。不能把python关键字和函数名作为变量名。变量名应既简短又具有描述性。慎用小写字母l和大写字母O,容易和1,0混淆。
1.1.2使用变量时避免命名错误
出现错误时解释器会提供一个traceback(回溯)。Traceback是一条记录,指出了什么地方出现错误,显示错误提示。
1.2字符串str
1.字符串就是一系列字符。是一种数据类型,在Python中用引号括起的都是字符串,可单引号也可双引号。
2.Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。把Unicode编码转化为“可变长编码”的UTF-8编码。
3.Python对bytes类型的数据用带b前缀的单引号或双引号表示:x = b'ABC'。以Unicode表示的str通过encode()方法可以编码为指定的bytes。
>>> 'ABC'.encode('ascii')
b'ABC'
反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
>>> b'ABC'.decode('ascii')
'ABC'
4. 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:
>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
5.要计算str包含多少个字符,可以用len()函数,len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。可见,1个中文字符经过UTF-8编码后通常会占用3个字节,而1个英文字符只占用1个字节。
6.当num<0时,bin(num + 2**32),转化为16位的二进制。也可以用bin(num & 0xffffffff)转化为16位的二进制,两种方法效果是一样的。
7.二进制表示法:前缀为0b的字符串,'0b1110',用bin()把数字转换为二进制。>>> bin(14) 表示为'0b1110'
8.16进制表示法:前缀为0x的字符串,'0xe'用hex()把数字转换为16进制。>>> hex(14) 表示为 '0xe'
9.32进制表示法:前缀为0o的字符串,'0o16',用Oct把数字转换为32进制。>>> oct(14) 表示为 '0o16'
10.使用int( )可以把其他进制转换为10进制.
>>> int('', 2)
9
>>> int('', 16)
9011
1.2.1对字符串的操作
- title() 以首字母大写的方式显示每个单词,即将每个单词的首字母都改为大写。
- upper() 将字符串改为全部大写。lower()将字符串改为全部小写。
- capitalize() 将字符串的第一个字符转换为大写。
- 如果字符串至少有一个字母,并且所有字母都是大写或小写,isupper()和 islower()方法就会相应地返回布尔值 True。否则,该方法返回 False。
- salpha() 返回 True,如果字符串只包含字母,并且非空;
- isalnum() 返回 True,如果字符串只包含字母和数字,并且非空;
- sdecimal() 返回 True,如果字符串只包含数字字符,并且非空;
- sspace() 返回 True,如果字符串只包含空格、制表符和换行,并且非空;
- istitle() 返回 True,如果字符串仅包含以大写字母开头、后面都是小写字母的单词。
- startswith()和 endswith()方法返回 True,如果它们所调用的字符串以该方法传入的字符串开始或结束。否则,方法返回 False。
- count() 返回str在字符串中出现的次数。可以指定范围,添加参数beg 或者 end。
- join()方法在一个字符串上调用,参数是一个字符串列表,返回一个字符串。
>>> ', '.join(['cats', 'rats', 'bats'])
'cats, rats, bats'
>>> ' '.join(['My', 'name', 'is', 'Simon'])
'My name is Simon'
>>> 'ABC'.join(['My', 'name', 'is', 'Simon'])
'MyABCnameABCisABCSimon'
- split()方法做的事情正好相反:它针对一个字符串调用,返回一个字符串列表。也可以向split()方法传入一 个分割字符串,指定它按照不同的字符串分割。
>>> 'My name is Simon'.split()
['My', 'name', 'is', 'Simon']
- rjust()和 ljust()字符串方法返回调用它们的字符串的填充版本,通过插入空格来对齐文本。这两个方法的第一个参数是一个整数长度,用于对齐字符串。rjust()和 ljust()方法的第二个可选参数将指定一个填充字符,取代空格字符。
>>> 'Hello'.rjust(20, '*')
'***************Hello'
>>> 'Hello'.ljust(20, '-')
'Hello---------------'
- center()字符串方法与 ljust()与 rjust()类似,但它让文本居中,而不是左对齐或右对齐。
- sort()将字符串排序。
- 注意,Python对大小写很敏感,如果写错了大小写,程序会报错。
- 合并——Python使用加号+来合并字符串。
- 删除空白:方法rstrip()右, lstrip()左, strip()两边,strip()也可以带参数,删除指定内容。
- 语法错误:在用单引号括起的字符串中,如果包含撇号,就将导致错误。双引号不会。
- Print() 打印,添加逗号会空一格。
- pyperclip 模块有 copy()和 paste()函数,可以向计算机的剪贴板发送文本,或从它接收文本。
- 字符串有个replace()方法,可以替换指定内容。
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
1.2.2空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
1.2.3常量
常量就是不能变的变量,比如常用的数学常数π就是一个常量。在Python中,通常用全部大写的变量名表示常量:PI = 3.14159265359。
1.2.4赋值
在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量:
>>>a = 123 # a是整数
>>>print(a)
123
>>>a = 'ABC' # a变为字符串
>>>print(a)
'ABC'
赋值语句:a, b = b, a + b,这种赋值非常方便。用这种赋值可以很轻松的构造斐波那契数列:
fib = [0, 1] # 构造fib数列
a, b = 0, 1
while b < 1000:
a, b = b, a + b
fib.append(b) print(fib) 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597]
1.2.5格式化
Python中格式化有两种,第一种用%实现,第二种{ } format格式。
% 运算符就是用来格式化字符串的。在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。常用占位符:
- %d 整数
- %f 浮点数
- %s 字符串
- %x 十六进制整数
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
>>> '%2d-%02d' % (3, 1)
' 3-01'
>>> '%.2f' % 3.1415926
'3.14'
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。有些时候,字符串里面的%是一个普通字符,需要转义,用%%来表示一个 % 。
第二种格式化方法,format,通过 {} 来代替 % 。
1、正常使用
>>> print("我叫{},今年{}岁了".format("小李", 20))
我叫小李,今年20岁了
2、还可以通过在括号里填写数字,修改格式化的顺序,0为第一个参数,1为第二个参数。
>>> print("我叫{1},今年{0}岁了".format("小李", 20))
我叫20,今年小李岁了
3、通过key取变量,通过设定关键字,可以在 { }中直接指定关键字,不用管format中参数的顺序。
>>> print("我叫{name},今年{age}岁了".format(name="小李", age=20))
我叫小李,今年20岁了
1.2.6转义字符
- 空白——泛指任何非打印字符,如空格、制表符和换行符。
- 转义字符\可以转义很多字符 \t 制表符 ,\n 换行符。
- 字符\本身也要转义,所以\\表示的字符就是\ 。
- 如果字符串里面有很多字符都需要转义,Python中可以用 r''表示'' 内部的字符串默认不转义(原始字符串):
>>> print('\\\t\\')
\ \
>>> print(r'\\\t\\')
\\\t\\
>>> print(r'That is Carol\'s cat.')
That is Carol\'s cat.
1.3数字
1.3.1整数 int
- 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等。
- 整数的除法是精确的。在Python中,有两种除法,一种除法是/ , /除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数。还有一种除法是//,称为地板除,两个整数的除法仍然是整数。
- % 取余数。
- ** 表示次方,例如 a**b,即 a 的 b 次方。
- pow(x, y)函数,计算x的y次方,例如:pow(2, 10) = 1024,pow(2, 15) = 32768 。
1.3.2浮点数float
- Python将带小数的数字都称为浮点数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等的。
- 对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等。
- 浮点数精确到小数后15位。
1.3.3复数complex
1.使用complex()把数字转化为复数。 complex(2) ---> (2+0j)
2.对于复数 z = 7 + 5j ,可以用z.real得到实数部分,z.imag得到虚数部分。
3.复数的虚数部分通过加 j 或 J 来标识。
1.3.4使用函数str()避免错误
- 使用 type() 可以坚持数据类型,不过 type() 不能对class类的子集进行检查。
- 数据类型检查也可以用内置函数isinstance()实现,isinstance就可以对class类的子集进行检查,所有要看情况自己判断选择使用哪一个:
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
1.4注释
1. 以#开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
# 这是个注释
2.由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
3.文档字符串的注释 , 用3对双引号表示,一般用于对函数或类的说明, ””” ”””
1.5Python之禅
在命令行中输入import this打印出python之禅
The Zen of Python, by Tim Peters
- Beautiful is better than ugly.
- Explicit is better than implicit.
- Simple is better than complex.
- Complex is better than complicated.
- Flat is better than nested.
- Sparse is better than dense.
- Readability counts.
- Special cases aren't special enough to break the rules.
- Although practicality beats purity.
- Errors should never pass silently.
- Unless explicitly silenced.
- In the face of ambiguity, refuse the temptation to guess.
- There should be one-- and preferably only one --obvious way to do it.
- Although that way may not be obvious at first unless you're Dutch.
- Now is better than never.
- Although never is often better than *right* now.
- If the implementation is hard to explain, it's a bad idea.
- If the implementation is easy to explain, it may be a good idea.
- Namespaces are one honking great idea -- let's do more of those!
Python基础学习总结(一)的更多相关文章
- Day1 Python基础学习
一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操作 ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Day1 Python基础学习——概述、基本数据类型、流程控制
一.Python基础学习 一.编程语言分类 1.简介 机器语言:站在计算机的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件 汇编语言:站在计算机的角度,简写的英文标识符取代二进制去编 ...
- Python 基础学习 总结篇
Python 基础学习总结 先附上所有的章节: Python学习(一)安装.环境配置及IDE推荐 Python学习(二)Python 简介 Python学习(三)流程控制 Python学习(四)数据结 ...
- (一)python基础学习
根据廖雪峰老师的python教程写一些学习总结! Python基础学习 1.使用list和tuple (1)list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时 ...
- python基础学习(起步)
目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- Python基础学习一
Python基础学习一 1.变量与常量 变量名:大小写英文.数字.下划线的组合,数字不能开头 常量名:习惯上常量用大写字母命名,例如"PI" 2.多行输出 转义符:反斜杠(),如果 ...
- Python基础学习五
Python基础学习五 迭代 for x in 变量: 其中变量可以是字符串.列表.字典.集合. 当迭代字典时,通过字典的内置函数value()可以迭代出值:通过字典的内置函数items()可以迭代出 ...
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
随机推荐
- maven 引入外部jar包
方式1:dependency 本地jar包 <dependency> <groupId>com.hope.cloud</groupId> <!--自定义--& ...
- SFML从入门到放弃(1) 窗口和交互
SFML从入门到放弃(1) 窗口和交互 创建一个新窗口: sf::RenderWindow window(sf::VideoMode(,),"new window"); 但是光创建 ...
- CF1106F Lunar New Year and a Recursive Sequence(矩阵快速幂+bsgs+exgcd)
题面 传送门 前置芝士 \(BSGS\) 什么?你不会\(BSGS\)?百度啊 原根 对于素数\(p\)和自然数\(a\),如果满足\(a^x\equiv 1\pmod{p}\)的最小的\(x\)为\ ...
- [Flex] 修改注释中的@author方法
当然,在Flash Builder里,按Ctrl+Shift+D可以很方便在添加AsDoc注释,也可以修改,可是有些生成的@author是系统的用户名(如:administor),如何修改 修改方法之 ...
- [译文]casperjs的API-clientutils模块
casper提供了少量的客户端接口用来进行远程DOM环境注入,通过clientutils模块的ClientUtils类实例中的__utils__对象来执行: casper.evaluate(funct ...
- CF960G Bandit Blues 分治+NTT(第一类斯特林数)
$ \color{#0066ff}{ 题目描述 }$ 给你三个正整数 \(n\),\(a\),\(b\),定义 \(A\) 为一个排列中是前缀最大值的数的个数,定义 \(B\) 为一个排列中是后缀最大 ...
- 【转】IDEA中xml文件头报错:URI is not registered (Settings | Languages & Frameworks | Schemas and DTDs)
有时候在IDEA中配置spring文件时会出现这个错误 URI is not registered (Settings | Languages & Frameworks | Schemas ...
- 阿里云Centos下安装nginx之后外网无法访问
centos 7.4 nginx1-14.0编译安装 curl 127.0.0.1 可以请求到 index.html curl local 可以请求到 index.html http://ip/ 无法 ...
- train loss与test loss结果分析
train loss 不断下降,test loss不断下降,说明网络仍在学习; train loss 不断下降,test loss趋于不变,说明网络过拟合; train loss 趋于不变,test ...
- Codeforces - tag::graphs 大合集 [占坑]
520B 给定初始n和目标m,存在两种操作\(-1\)和\(×2\),要求最少操作次数 无脑解法是BFS,不能解决稍大的规模 当n>m时,输出n-m 否则逆向处理,转换为m到n的最小操作次数,存 ...