廖雪峰Python(二)Python基础语法

python基础

  • Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。
  • 在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
  • 复制粘贴功能失效,粘贴后注意缩进。
  • 最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。

数据类型和变量

数据类型

整数
  • 任意大小,正负。
  • 十六进制使用0x前缀和0-9,a-f表示。
  • 整数运算始终为准确的,包括除法。
  • / 作为除法结果为浮点数, // 为地板除 结果为整数,只取整数部分,不四舍五入。
  • %为取余。
浮点数
  • 使用科学技术法小数点位置可变,表示也不同。
  • 1.23e9,12.3e8
  • 浮点数运算会有四舍五入的误差。
字符串
  • 以单引号或者双引号括起来的文本,‘’或者“”不是一部分。
  • 需要在引号里面使用符号需要使用 转义字符 表示。
  • ’ " \n \t \ 分别为’ " 换行 制表符
  • r’ '表示内部的字符不转义。
  • 用’’’ ‘’'可以添加多行内容。
>>>print('''line1
 line2
line3''')

line1
line2
line3

布尔值
  • True和False,区分大小写。
  • 可以用not or 和and 运算。
空值
  • None 注意大小写
  • 并不能理解为0

变量

  • 不仅是数字可以是任意数据类型
  • 变量本身类型并不固定,可以任意变换。
  • 与java等静态语言相比,动态语言更为灵活,无需在定义时声明类型。
    a = ‘ABC’
    b = a
    a = ‘XYZ’
    print(b)
    此时B为’ABC’

常量

  • 意为不能改变的变量,常用大写字母表示。
  • 但实质上仍是一个常量,没有机制去保护它不被改变。

  • 对变量赋值是把它与真正的对象建立联系
  • 让x=y是让x与y指向的对象建立联系,之后y的改变与x无关。
  • 可以把任何数据看成一个对象,而变量在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。

字符串和编码

字符编码

  • ASCII码:美国人发明,包含大小写英文字母和数字,一些符号,127个字符。
  • GB2312码:中国人发明的,编订了中文。
  • Unicode:现代计算机系统和操作系统通用,不会产生乱码问题,但在传输上不划算。
  • UTF-8:可变长编码,可以把Unicode编码字符根据不同的数字大小编码成1-6个字符。而且ASCII编码可以看成UTF-8的一部分。
  • 计算机内存中使用的是Unicode编码,记事本在读取文件的时候需要把文件的UTF-8编码转换为Unicode编码到内存中,保存的时候再转换为UTF-8保存在文件中。
    ####Python的字符串
  • Python3中使用Unicode编码,即适配多种语言。
  • ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符。
>>>ord('A')
65
>>>chr(66)
’B'
  • 由于Python的字符串类型是str,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str变为以字节为单位的bytes。

  • Python对bytes类型的数据用带b前缀的单引号或双引号表示:

x = b'ABC'
  • 要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。
  • 以Unicode表示的str通过encode()方法可以编码为指定的bytes。
>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
  • 在bytes中,无法显示为ASCII字符的字节,用\x##显示。反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法:
>>> b'ABC'.decode('ascii')
'ABC'
>>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')
'中文'
  • 如果bytes中只有一小部分无效的字节,可以传入errors='ignore’忽略错误的字节。
  • 要计算str包含多少个字符,可以用len()函数。len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数。
  • 在操作字符串时,我们经常遇到str和bytes的互相转换。为了避免乱码问题,应当始终坚持使用UTF-8编码对str和bytes进行转换。
  • 如果.py文件本身使用UTF-8编码,并且也申明了# -- coding: utf-8 --,打开命令提示符测试就可以正常显示中文。

格式化

  • 在Python中,采用的格式化方式和C语言是一致的,用%实现。
>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
  • 如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串。

  • 用%%来表示一个%

  • format()另一种格式化字符串的方法是使用字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……

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

使用list和tuple

list

  • Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。
>>> classmates = ['Michael', 'Bob', 'Tracy']
>>> classmates
['Michael', 'Bob', 'Tracy']
  • 可用classmates[0]访问Michael,注意是从0开始的。超出范围会IndexError,可用len(classmates)-1访问最后一个元素。
  • len(classmates) 输出为3
  • classmates.append(‘Adam’)添加元素到末尾。
  • classmates.insert(1,‘Jack’)添加元素到指定位置
  • pop()方法删除最后一个元素,pop(10)删除指定位置元素。
  • 修改指定位置元素可直接赋值,classmates[1]='Sarach
  • list中元素类型可不同,也可以是另外一个list。
  • 空的list长度为0.

tuple

  • tuple与list的区别是tuple一旦初始化就不可更改。
  • 没有append,insert方法。
  • 注意,在定义时,元素必须确定。
  • 定义一个数字的时候
>>> t = (1,)
>>> t
(1,)

空的

>>> t = ()
>>> t
()
  • 注意再tupol中含有list的时候,list不可变,但list中的元素可变。
>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'
>>> t[2][1] = 'Y'
>>> t
('a', 'b', ['X', 'Y'])

条件判断

条件

  • if 注意同缩进的为一个代码块
  • 注意冒号
  • 注意elseif 为 elif

再议input

  • input()返回类型是str
  • 可以用int()把str类型的数据转换为整数类型

循环

循环

for…in 循环
  • for x in …循环就是把每个元素代入变量x,然后执行缩进块。
    计算1-10的和
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
    sum = sum + x
print(sum)

挨个打印元素

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)
  • range(5)生成的序列是从0开始小于5的整数
while循环
  • 实现100以内所有奇数之和
sum = 0
n = 99
while n > 0:
    sum = sum + n
    n = n - 2
print(sum)

break

  • 提前退出循环。打印到10退出。
n = 1while 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)

打印出1,3,5,7,9.

  • 不要滥用break和continue语句!
    大多数循环并不需要用到break和continue语句!

使用dict和set

dict
  • dict全称dictionary,字典,也称map,使用键值存储(key-value)
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Michael']
95
  • 相较于list,可快速查找出元素。
  • 根据key取值也要根据key放值,可多次。
>>> d['Jack'] = 90
>>> d['Jack']
90
>>> d['Jack'] = 88
>>> d['Jack']
88
  • 可通过in判断key是否存在:
>>> 'Thomas' in d
False
  • 通过get()方法可判断值是否存在。
  • pop(key)方法对应的key的值会被删除
  • 注意dict内部存放的顺序与key的顺序是没有关系的。
  • 注意dict的key必须是不可变对象,字符串,整数等都可以,list不可以。

set

  • 也是一组key的集合,但是不存储值。
  • 没有重复元素。重复元素会自动过滤。
  • 创建一个set时,需要提供一个list作为输入集合
  • add()添加,remove()删除。
  • 可视为数学意义上的无序和无重复元素的集合
  • 同样无法放入可变对象。

不可变对象

  • 不可变对象str有replace()方法
>>> a = 'abc'
>>> a.replace('a', 'A')
'Abc'
>>> a
'abc'

replace取回a的abc的值,将其变为Abc然后返回。
但a原本的值不变。
相当于这个方法根据取回的值创建的一个新的字符串并且返回。

发布了2 篇原创文章 · 获赞 0 · 访问量 35

猜你喜欢

转载自blog.csdn.net/jing123723/article/details/104749406