python学习-1
基础
输出:
print()
输入:
input()
,可以让用户输入字符串,并赋值,如:name = input()
,提示符可以作为参数注释:
#
代码块:语句以
:
结尾时,缩进的语句视为代码块,4个空格的缩进a = 100 if a >= 0: print(a) else: print(-a)
数据类型:
整型
浮点数
字符串:单引号或双引号声明字符串,
r''
表示''
中的字符串不转义,'''...'''
表示多行内容,其中...
在交互命令行中使用strip()
:去除字符串首尾的空格
布尔值:
False
,True
。布尔运算:not
,and
,or
空值:
None
变量:直接使用变量名(python是动态语言)
列表:
list
(有序集合),类似于数组。使用len()
获得list
元素的个数,使用-1
取到最后一个元素,使用负数可以从后获取元素。append(value)
:追加元素到末尾insert(index, value)
:把元素插入到指定的位置pop()
:删除末尾的元素,list.pop(index)
删除指定位置的元素len()
:获取元素个数len(list)
+
:两个list拼接
tuple
(元组),类似数组,但是一旦初始化就不能修改
# list定义 >>> classmates = ['Michael', 'Bob', 'Tracy'] # tuple定义 >>> t = (1, 2) >>> t = () >>> t = (1,) # 只有1个元素的tuple定义时必须加一个逗号,消除()运算符的歧义 # 指针指向 >>> t = ('a', 'b', ['A', 'B']) >>> t[2][0] = 'X' >>> t[2][1] = 'Y' >>> t ('a', 'b', ['X', 'Y'])
字典:
dict
,类似map,使用键-值(key-value)存储in
,判断dict
中是否存在keyget(key[,returnValue])
,判断dict
中是否存在key,可以指定不存在时的返回值pop(key)
,删除key值
set
,类似无序集合,不储存value值,无重复key值add(key)
:添加元素到set中,可以重复添加,但是没有效果remove(key)
:删除元素
# dict定义 >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} # set定义 >>> s = set([1, 2, 3])
- 与list区别:
- dict:查找和插入的速度极快,不会随着key的增加而变慢;需要占用大量的内存,内存浪费多。
- list:查找和插入的时间随着元素的增加而增加;占用空间小,浪费内存很少。
运算:
+
,-
,*
,/
( 除法结果是浮点数),//
(地板除,两个整数相除仍然是整数,除不尽的保留整数部分),%
(取余)编码:
ord()
获取字符的整数编码,chr()
把编码转换为对应的字符,把string
变为一字节为单位的bytes
,bytes
类型的数据用带b
前缀的单引号或双引号表示,bytes
的每个字符都只占用一个字节,以Unicode表示的str
通过encode()
方法可以编码为指定的bytes
。纯英文的str
可以用ASCII
编码为bytes
,内容是一样的,含有中文的str
可以用UTF-8
编码为bytes
。含有中文的str
无法用ASCII
编码,因为中文编码的范围超过了ASCII
编码的范围,Python会报错。在
bytes
中,无法显示为ASCII字符的字节,用\x##
显示。从网络或磁盘上读取了字节流,那么读到的数据就是
bytes
。要把bytes
变为str
,就需要用decode()
方法,如果bytes
中包含无法解码的字节,decode()
方法会报错。如果
bytes
中只有一小部分无效的字节,可以传入errors='ignore'
忽略错误的字节。>>> '中文'.encode('utf-8') b'\xe4\xb8\xad\xe6\x96\x87' >>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore') '中'
要计算
str
包含多少个字符,可以用len()
函数,如果换成bytes
,len()
函数就计算字节数。文件开头要写如下语句,第一句告诉Linux/OS X系统,这是一个Python可执行程序,第二句Python解释器,按照UTF-8编码读取源代码。文本编辑器里要设置UTF-8 without BOM编码。
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
格式化:
%
。在字符串内部,%s
表示用字符串替换,%d
表示用整数替换,%f
表示用浮点数替换,%x
表示用十六进制整数替换,转义也使用%
,如%%
转义为%
。
>>> 'Hello, %s' % 'world' 'Hello, world' >>> 'Hi, %s, you have $%d.' % ('Michael', 1000000) 'Hi, Michael, you have $1000000.'
- format()替换占位符
{0}
、{1}
…
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125) 'Hello, 小明, 成绩提升了 17.1%'
条件判断:
if
、elif(else if缩写)
、else
(注意冒号缩进)循环:
for...in
循环listwhile
循环break
退出当前循环continue
跳出当前循环进行下一次循环- 注意不要滥用
break
和continue
,分叉过多易出错
作用域
当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。
在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域。