2018-08-22

1.注释

2.标识符

'''
a.字母、数字、下划线_、python3中可以是中文
b.数字不能开头
c.大小写敏感
'''

3.变量

'''
a.变量干什么的? 存储数据
b.怎么声明变量? 变量名 = 值
c.变量名的要求:标识符,不能是关键字;PEP8(所有的字母都要小写,多个单词之间用下划线隔开),见名知义
d.python中声明变量和给变量赋值的原理
'''
a = 10
a1 = 10; b1 = 100
a2 = b2 = c3 = 10

声明一个变量保存年龄

age = 18
name = '余婷'
student_name = '刘欢'

a = 10
print(id(a))
b = 10
a = 100
print(id(a), id(b))

4.基本数据类型(int,float,bool)

True False

5.运算符

a.数学运算符(+,-,*,/,%, //, **)、b.比较运算符(>,<,==,!=,>=,<=)、c.逻辑运算符(and, or, not)、

赋值运算符(=, +=, -=, =,...,*=) 赋值符号的左边必须是变量,

b.运算顺序(数学 > 比较 > 逻辑 > 赋值),可以通过括号来改变优先级

a = 10
a += 2 # a = a + 2

6.进制

a.基数

b.0b(二) bin(); 0o(八) oct(); 0x(十六) hex()

0b11
0o67
0x1f

(了解)

计算机在存数据的时候,都是以二进制的形式存在计算机中的(存一个数的补码)。

1.原码:数据的二进制形式

'''
正数的原码:符号位的值是0,后面是数值大小
负数的原码:符号位的值是1,后面是去掉符号的数值大小
'''

10 -> 1010 原码: 00001010

-10 -> 原码:10001010

2.反码:

'''
正数的反码:反码和原码一样
负数的反码:符号不变,后面的每一位的值取反(0->1, 1->0)
'''

10 -> 反码:00001010

-10 -> 反码:11110101

3.补码:

'''
正数的补码:补码和原码一样
负数的补码:反码+1
'''

10 -> 补码:00001010

-10 -> 补码:11110110

计算机只有加法器,没有办法做减操作

2+(-3) --> 00000010 + 10000011 = 10000101(-5) - 原码相加的结果

2+ (-3) --> 00000010 + 11111101 = 11111111(补码) = 11111110(反码) = 10000001(-1) - 补码相加的结果

1.什么是字符串

"""
a.用单引号或者双引号括起来的字符集就是字符串
'ahshu123~!*&&^耍数组', "a k987"
b.字符串中的每个独立的单元我们叫字符,
例如:字符串'abc123'中'a','b','c','1','2','3'就是字符
"""
name = '骆昊'
poem = '床前明月光'

2.转义字符

'''
说明:python中没有字符类型,如果要表示字符,就是用一个长度是1的字符串表示,例如:'a','1',
长度:指的就是字符串中字符的个数,例如:'abc' - 长度是3 ,'abc123, 你好'-长度是:10

a.通过\将一些特殊的字符转换成一个具有特殊功能或者特殊意义的字符,就是转义字符。

b.常见的转义字符:
\n --- 换行
\t --- 制表符(相当于tab键)
\ ---
' --- '
" --- "
在计算字符串长度的时候,转义字符的长度是1

'''
poem = '床前明月光,\t疑是地上霜\n'
print(poem)

str1 = 'abc\scd'
print(str1)

str2 = 'abc'123"abc'
print(str2)

str3 = "abc"123"
print(str3)

3.Unicode编码

"""
a.python中字符的编码采用的是Unicode编码
b.Unicode是采用两个字节对一个字符进行编码(2^15),能够将世界上所有的符号进行编码
c.Unicode编码中包含了ascii码

将字符转换成指定的数值,这个过程就是编码。(编码的目的是方便计算机存储)
将数值转换成对应的符号的过程就是反编码(解码)

0 --> 0
'0' --> 48
"""

1).将Unicode码转换成字符: chr(编码)

print(chr(0xA001))
print(chr(0xAC00))
print(chr(0x4e60))

2).将字符转换成Unicode编码: ord(字符)

code1 = ord('余') # 结果是10进制的
code2 = ord('婷')
print(hex(code1), hex(code2))

字符串实质可以是一个不可变的序列,序列内容是字符。

一旦字符串确定,那么里面的字符和字符的位置就不可变了,例如:'abc'

1.怎么获取单个字符

'''
python中的字符串,可以通过下标(索引)来获取指定位置上的字符:字符串[索引]
说明:
a.字符串:可以是字符串值,也可以是字符串变量
b.[]: 中括号使固定语法
c.索引:从0开始到字符串长度减1 (0对应第一个字符);
-1 ~ -长度(-1对应的是最后一个字符, -2对应的是倒数第2个字符)

注意:索引不能越界,否则会报错(产生异常)
'''

str1 = 'acbd' # a->0, c->1, b->2, d->3
print(str1[0])

print(str1[4]) # IndexError: string index out of range

name = '王海飞'
print(name[1])

print(name[-1], name[-2], name[-3])
print('abc'[2])

print(name[-4]) # IndexError: string index out of range

2. 获取部分字符(获取子串) -- 切片

字符串[下标1:下标2] : 从下标1开始,获取到下标2前的所有的字符

(从下标1开始,每次下标值加1,一直加到下标2前)

注意:下标1对应的位置,一定要在下标2对应的位置前

str2 = 'hello world'

print(str2[0:4]) # hell
print(str2[2:7]) # llo w
print(str2[2:-1]) # llo worl
print(str2[3:12]) # 切片时下标可以越界,越界的时候就取临界值
print(str2[-5:-2])
print(str2[-5:9])

字符串[下标1:下标2:步进]

"""
从下标1开始获取,每次下标值增加步进值,没增加一次取一个字符,直到取到下标2前为止
注意:a.步进如果是正数,那么下标1对应的字符的位置一定要下标2对应的位置的前面;
步进是负数,那么下标1对应的位置一定要在下标2对应的位置的后面
b.下标2对应字符是取不到的
"""
str3 = 'helloPython'
print(str3[0:5:2]) # hlo 步进:3 hl
print(str3[-1:5:-1]) # nohty

下标的省略

"""
切片的时候,下标1和下标2是可以省略的

下标1省略:默认从开头开始获取(开头可能是字符串的第一个字符,也可能是字符串的最后一个字符)

"""
str4 = 'good good study,day day up'
print(str4[:4])
print(str4[:4:-1])

"""
下标2省略: 从下标1位置开始获取,获取到结束(结束可能是字符串的最后一个字符,也可能是字符串的第一个字符)
"""
print(str4[1:])
print(str4[3::-1])

print(str4[:]) # good good study,day day up
print(str4[::-1]) # pu yad yad,yduts doog doog

练习:要求将一个字符串中所有下标是奇数位上的字符获取出来

str5 = 'abcdefgh'
print(str5[1::2])

1. + 运算符

"""
字符串1+字符串2:
python支持两个字符串相加, 其效果就是将两个字符串拼接在一起产生一个新的字符串

注意:如果+的一边是字符串,那么另外一个也必须是字符串
"""
print('abc'+'123')
str1 = 'world'
newstr = 'hello' + ' ' + str1
print(newstr)

print(10+'abc') # TypeError: unsupported operand type(s) for +: 'int' and 'str'

2. * 运算符

"""
字符串1整数: 字符串重复多次
"""
print('abc'
3)

3. 所有的比较运算符

str1 = 'abc'
print('abc' == str1)
print(str1 != 'ab')

比较大小

"""
str1 > str2; str1 < str2
让str1中的每一位的字符,分别和str2中每一位的字符依次比较。
直到不同为止,再看不同字符中谁的编码值大或者小
"""
print('dbcd' > 'abcde')
print('二' > '余婷')
print(ord('二'), ord('余'))

4.in 和 not in

"""
str1 in str2: 判断str1是否在str2中(str2是否包含str1 / str1是否是str2的子串)

结果是布尔值
"""
print('abc' in 'a1b2cdefg')
print('f' not in 'python')

5.获取字符串长度

字符串的长度,指的是字符串中字符的个数

len()内置函数

str3 = 'project'
print(len(str3), len('abc 123\n'))

补充:空串

str4 = ''
str5 = ""
print(len(str5))

len1 = len(str3) # len1 = 7
index = len1 - 1 # 6
print(str3[-1], str3[index])

6.阻止转义

在字符串的最前面添加r/R可以阻止转义

print('a\nb','a\nb\')
print(len('a\nb\')) # 4

print(r'a\nb',R'a\nb\')
print(len(r'a\nb\')) # 6

print('a\nb\\') # a\nb\
print('\\n\') # \换行\

print(r'\\n\') # \\n\

练习

str1 = r'\nabc123' 求:str1[3] b

str2 = 'abc123\123' 求: str2[-5] 3

python为字符串提供了很多的内建函数

字符串.函数()

注意:这些所有的函数的功能都不会影响原来的字符串,而是产生一个新的字符串

str1 = 'hello python'

1.capitalize() 将字符串的第一个字符转换为大写

newstr = str1.capitalize()
print(newstr, str1)

print('abc'.capitalize())

2.center(width, fillchar)

让字符串变成width对应的长度,原内容居中,剩余的部分使用fillchar的值来填充

witdh - 整数; fillchar - 任意字符

print('abc'.center(10, '*')) # ***abc****

3. rjust(width, fillchar)

让字符串变成width对应的长度,原内容靠右,剩余的部分使用fillchar的值来填充

2015103001 2015103002 2015103015

1 2 3 4 5 11 20 ----> 001 002 003 010 011 012

1 --> 0001 11 -> 0011 123 -> 0123

number = '12'
new_id = number.rjust(4, '0')
print(new_id)

3.原字符串.count(str)

判断str值在原字符串中出现的次数

str -> 字符串

print('abcabaa'.count('ab'))

print('贰1壹二2一'.isnumeric())

4.str1.join(str2)

在str2中的每个字符串之间插入一个str1

print('-+'.join('abc'))

5.str1.replace(old, new)

将str1中old全部替换成new

new_str = 'abcdahulapuyeahj'.replace('a','+')
print(new_str)

Python3字符串

Python访问字符串中的值

Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠()转义特殊字符。
获取字符串中的单个字符的语法格式如下:
字符串变量[下标]
注意:下标的返回是0~字符串长度-1

# 获取第一个字符
print(var[0])

# 获取第3个字符
print(var[2])

# 获取最后一个字符
print(var[-1])

# 获取倒数第二个字符
print(var[-2])  

--
字符串的截取的语法格式如下:
字符串变量[头下标:尾下标]

# 获取从第2个开始到第3个的所有字符
print(var[1:3])

# 获取从第一个开始到第4个的所有字符
print(var[:4])

# 获取从第三个字符开始后面所有的字符
print(var[2:])

# 获取从第4个字符开始到倒数第二个的所有字符
print(var[4:-1])

--

Python字符串运算符

下表实例变量a值为字符串 "Hello",b变量值为 "Python":

操作符 描述 实例
+ 字符串连接 a + b 输出结果: HelloPython
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分 a[1:4] 输出结果 ell
in 成员运算符 - 如果字符串中包含给定的字符返回 True 'H' in a 输出结果 1
not in 成员运算符 - 如果字符串中不包含给定的字符返回 True 'M' not in a 输出结果 1
r/R 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print( r'\n' )print( R'\n' )
% 格式字符串
a = 'Hello'
b = 'Python'  

print(a + ' ' + b)   # 打印:Hello Python  

str1 = a * 3
print(str1)  # 打印:HelloHelloHello  

re = 'He' in a
print(re)   # 打印:True  

re = 'He' not in a
print(re)   # 打印: False  

Python字符串格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在 Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))  

python字符串格式化符号:

符号 描述
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

--

Python 的字符串内建函数

Python 的字符串常用内建函数如下:

序号 方法 描述
1 capitalize() 将字符串的第一个字符转换为大写
2 center(width, fillchar) 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格。
3 count(str, beg= 0,end=len(string)) 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数
4 bytes.decode(encoding="utf-8", errors="strict") Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回。
5 encode(encoding='UTF-8',errors='strict') 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'
6 endswith(suffix, beg=0, end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.
7 expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。
8 find(str, beg=0 end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1
9 index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常.
10 isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False
11 isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
12 isdigit() 如果字符串只包含数字则返回 True 否则返回 False..
13 islower() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False
14 isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False(中文数字也可以)
15 isspace() 如果字符串中只包含空白,则返回 True,否则返回 False.
16 istitle() 如果字符串是标题化的(见 title())则返回 True,否则返回 False
17 isupper() 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False
18 join(seq) 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
19 len(string) 返回字符串长度
20 ljust(width[, fillchar]) 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。
21 lower() 转换字符串中所有大写字符为小写.
22 lstrip() 截掉字符串左边的空格或指定字符。
23 maketrans() 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
24 max(str) 返回字符串 str 中最大的字母。
25 min(str) 返回字符串 str 中最小的字母。
26 replace(old, new [, max]) 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。
27 rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找.
28 rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始.
29 rjust(width,[, fillchar]) 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串
30 rstrip() 删除字符串字符串末尾的空格.
31 split(str="", num=string.count(str)) num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num 个子字符串
32 splitlines([keepends]) 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
33 startswith(str, beg=0,end=len(string)) 检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。
34 strip([chars]) 在字符串上执行 lstrip()和 rstrip()
35 swapcase() 将字符串中大写转换为小写,小写转换为大写
36 title() 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())
37 translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中
38 upper() 转换字符串中的小写字母为大写
39 zfill (width) 返回长度为 width 的字符串,原字符串右对齐,前面填充0
40 isdecimal() 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。

你可能感兴趣的:(2018-08-22)