廖雪峰Python之Python基础

廖雪峰Python之Python基础

数据类型和变量

转义字符
\n表示换行
\t表示制表符
\表示的字符就是
r’‘表示’‘内部的字符串默认不转义
‘’’…’’'表示多行内容

>>> print('''line1
... line2
... line3''')

一个布尔值只有True、False两种值
布尔值可以用and、or和not运算。

>>> if age >= 18:
    print('adult')
else:
    print('teenager')

None不能理解为0,因为0是有意义的,而None是一个特殊的空值

字符串和编码

ord()函数获取字符的整数表示
chr()函数把编码转换为对应的字符

>>>  ord('A')
65

‘ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节
纯英文的str可以用ASCII编码为bytes,内容是一样的
含有中文的str可以用UTF-8编码为bytes(不能用ASCII)
str通过encode()方法可以编码为指定的bytes

>>> 'ABC'.encode('ascii')
b'ABC'

要把bytes变为str,就需要用decode()方法

>>> b'ABC'.decode('ascii')
'ABC'

bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节:

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数
格式化
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数

>>> 'Hello, %s' % 'world'
'Hello, world'

format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……

>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'

使用list和tuple

list是一种有序的集合,下例classmates就是一个list

>>> classmates = ['Michael', 'Bob', 'Tracy']
 classmates
['Michael', 'Bob', 'Tracy']

用索引来访问list中每一个位置的元素,记得索引是从0开始的

>>> classmates[0]
'Michael'

最后一个元素:

>>> classmates[-1]
'Tracy'

可以往list中追加元素到末尾

>>> classmates.append('Adam')

也可以把元素插入到指定的位置,比如索引号为1的位置

>>> classmates.insert(1, 'Jack')

要删除list末尾的元素,用pop()方法:

>>> classmates.pop()
'Adam'

要删除指定位置的元素,用pop(i)方法,比如删掉第二位:

>>> classmates.pop(1)

替换:

>>> classmates[1] = 'Sarah'

tuple和list非常类似,但是tuple一旦初始化就不能修改

>>> classmates = ('Michael', 'Bob', 'Tracy')

只有1个元素的tuple定义时必须加一个逗号

>>> t = (1,)

特例:

>>> t = ('a', 'b', ['A', 'B'])
t[2][0] = 'X'
t[2][1] = 'Y'

则输出

>>> t
('a', 'b', ['X', 'Y'])

因为变的是list的元素,而不是list本身(作为tuple的元素)

条件判断

if语句

   if age >= 18: 
    ...
    else:
    ...

还可以用elif做更细致的判断

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

再议 input
input里要先把str转换成整数

s = input('birth: ')
birth = int(s)

循环

for…in循环——依次打印

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

range()函数,可以生成一个整数序列

>>> list(range(5))
[0, 1, 2, 3, 4]

while循环——只要条件满足,就不断循环,比如一百以内的和

sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

break语句可以提前退出循环

n = 1
while n <= 100:
    if n > 10: # 当n = 11时,条件满足,执行break语句
        break # break语句会结束当前循环
    print(n)
    n = n + 1
print('END')

continue语句,跳过当前的这次循环,直接开始下一次循环,比如只打印奇数

n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0: # 如果n是偶数,执行continue语句
        continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

不要滥用break和continue语句

使用dict和set

用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入

>>> d['Adam'] = 67
>>> d['Adam']
67

多次对一个key放入value,后面的值会把前面的值冲掉

要避免key不存在的错误,有两种办法,通过in判断key是否存在:

>>> 'Thomas' in d
False

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

创建一个set(集合性,不重、无序),需要提供一个list作为输入集合

> s = set([1, 2, 3])

通过add(key)方法可以添加元素到set中

> s.add(4)

通过remove(key)方法可以删除元素

交: s1 & s2
并:s1 | s2

str是不变对象,而list是可变对象。

>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

猜你喜欢

转载自blog.csdn.net/weixin_44770248/article/details/88974447