基础

Python是一种计算机编程语言。计算机编程语言和我们日常使用的自然语言有所不同,最大的区别就是,自然语言在不同的语境下有不同的理解,而计算机要根据编程语言执行任务,就必须保证编程语言写出的程序决不能有歧义,所以,任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。Python也不例外。

语法简要

  • #开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。
  • 其他每一行都是一个语句,当语句以冒号:结尾时,缩进的语句视为代码块。
  • Python程序是 大小写敏感 的,如果写错了大小写,程序会报错

数据类型

1.整数

2.浮点数

3.字符串

  • 字符串有很多换行,可使用 '''...'''
  • 字符串有很多转义,可以使r'...'

4.布尔值

  • True
  • False

5.空值

  • None表示,特殊空值,不能用0表示

6.列表、字典等多种数据类型,还允许创建自定义数据类型

字符编码

由于计算机是美国人发明的,因此,最早只有127个字符被编码到计算机里,也就是大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码。

其他国家也有自己的语言那也就造出自己的编码,这个时候Unicode应运而生,可以Unicode通常是2个字节,ASCII是1个字节, 如果你写的文本基本上全部是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。

这个时候,UTF-8出现了。

总结下:

  • 保存在磁盘或输出时用UTF-8
  • 计算机读取、编辑文件时用Unicode编码

字符串

函数 1.ord()获取字符串整数

ord('A')   # 65

2.chr编码转化为对应的字符

chr(66)   # B

3.用带b前缀的单引号或双引号表示str变为以字节为单位的bytes

x = b'ABC'

4.以Unicode表示的str通过encode()方法可以编码为指定的bytes。纯英文的str可以用ASCII编码为bytes,内容是一样的,含有中文的str可以用UTF-8编码为bytes

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

'中文'.encode('utf-8')  # b'\xe4\xb8\xad\xe6\x96\x87'

5.计算str包含多少个字符,可以用len()函数:

len('ABC') # 3

6.当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释; 第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

7.格式化 在Python中,采用的格式化方式和C语言是一致的,用%实现,举例如下:

'Hello, %s, I am %d years old.' % ('World', 29) # 'Hello, World, I am 29 years old.'

常见占位符 |占位符|替换内容| |:-|:-| |%d|整数| |%f|浮点型| |%s|字符串| |%x|十六进制整数|

list

列表。有序的集合,可以随时添加和删除其中的元素

names = ['张三', '李四', '王五']
names # ['张三', '李四', '王五']
len(names) # 3
names[0] # '张三'
names[-1]  # '王五'

newNames = names[:] 
newNames # ['张三', '李四', '王五']

names.append('赵六')
names # ['张三', '李四', '王五', '赵六']

names.insert(0, '芮新北') 
names # ['芮新北', '张三', '李四', '王五', '赵六']

names.pop() # '赵六'
names # ['芮新北', '张三', '李四', '王五']

names[0] = '江湖'
names # ['江湖', '张三', '李四', '王五']

classes = ['红色', '橙色']
names.append(classes)
names

定义空list

L = []
s = ['红色', '橙色']
g = [L, s]
g # [[], ['红色', '橙色']]

tuple

元组。一旦初始化就不能修改,具体是指tuple每个元素,指向永远不变。

  • 没有append(),insert()这样的方法
  • 因为不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple
names = ('张三', '李四', '王五')
names # ('张三', '李四', '王五')

t = ()
t # ()

s = (1)
s = 1
s2 = (1,)
s2 # (1,)

“可变的”tuple:

t = ('a', ['A', 'B'])
t[1][0] = 'X'
t # ('a', ['X', 'B'])

条件判断

input返回的是str类型

ageInput = input('Your age is ')
age = int(ageInput)
if age >= 18:
  print('adult')
elif age >= 6:
  print('teenager')
else:
  print('kid')

循环

1.for循环

sum = 0
l = list(range(10)) # [1,2,3,4,5,6,7,8,9]
for i in l:
  sum += i
print(sum)

2.while循环

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

3.break提前退出循环

n = 1
while n < 100:
  if n > 10:
    break
  print(n)
  n +=1
print('end')

4.continue跳过当前的这次循环,直接开始下一次循环

n = 0
while n < 10:
  n += 1
  if n%2 == 0:
    continue
  print(n) # 1,3,5,7,9

dist

全称dictionary,字典。在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

d = {'张三': '男', '李花': '女', '王五': '男'}
d['王五'] # '男'

d['王五'] = '女'
d['王五'] # '女'
d # {'张三': '男', '李花': '女', '王五': '女'}

'王五' in d # True
d.get('王五') # '女'

d.get('王六') # None
d.get('王六', -1) # -1

d.pop('张三') # '男'
d # {'李花': '女', '王五': '女'}

dict特点:(是用空间来换取时间的一种方法)

  • 查找和插入的速度极快,不会随着key的增加而变慢;
  • 需要占用大量的内存,内存浪费多。

list特点相反:

  • 查找和插入的时间随着元素的增加而增加;
  • 占用空间小,浪费内存很少。

set

和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。 1.重复元素在set中自动被过滤

s = set([1, 1, 2, 2, 3, 3]) 
s # {1, 2, 3}

s.add(4)
s # {1, 2, 3, 4}

2.set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作:

s1 = set(range(1,5))
s2 = set(range(3,10))
s1 & s2 # {3, 4}
s1 | s2 # {1, 2, 3, 4, 5, 6, 7, 8, 9}

set和dict的唯一区别仅在于没有存储对应的value

不可变对象

1.list可变

l = [1,4,6,3,2]
l.sort()
l # [1, 2, 3, 4, 6]

2.str不可变

a = '江湖11'
aa = a.replace('1', '2')
aa # '江湖22'
a #'江湖11'

results matching ""

    No results matching ""