(二)Python基础

        Python的语法比较简单,采用缩进方式,按照约定俗成的管理,应该始终坚持使用4个空格的缩进。

        Python程序是大小写敏感的。

        以 # 开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。其他每一行都是一个语句,当语句以冒号 :结尾时,缩进的语句视为代码块

数据类型

整数

        Python可以处理任意大小的整数,在程序中的表示方法和数学上的写法一模一样,十六进制用 0x 前缀和 0-9 ,a-f 表示,例如: 0xff00,0xa5b4c3d2,等等。

浮点数

        浮点数也就是小数,对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x10**9就是1.23e**9。

        整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。

字符串

        字符串是以单引号  ' 或双引号 " 括起来的任意文本,如果字符串内部既包含 ' 又包含 " 怎么办?可以用转义字符 \ 来标识。转义字符 \ 可以转义很多字符,比如 \n 表示换行, \t 表示制表符,字符 \ 本身也要转义,所以 \\ 表示的字符就是 \ 。

        为了简化,Python还允许用 r' ' 表示 ' ' 内部的字符串默认不转义,Python允许用 '''......''' 的格式表示多行内容。

布尔值

        布尔值和布尔代数的表示完全一致,一个布尔值只有 True、False 两种值,要么是 True,要么是 False,在Python中,可以直接用 True、False 表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

        布尔值可以用 and 、or 和 not 运算。and运算是与运算,只有所有都为 True,and运算结果才是 True。

        or 运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

        not 运算是非运算,它是一个单目运算符,把 True变成 False,False变成 True。

空值

        空值是Python里一个特殊的值,用 None 表示。None 不能理解为 0 ,因为 0 是有意义的,而 None 是一个特殊的空值。

变量

        变量的概念基本上和初中代数的方程变量是一致的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。变量在程序中就是用一个变量名表示了,变量名必须是大小写英文、数字和 _ 的组合,且不能用数字开头。

        这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。

        最后,理解变量在计算机内存中的表示也非常重要。当我们写:

a = 'ABC'

时,Python解释器干了两件事情:

  1. 在内存中创建了一个 'ABC' 的字符串;

  2. 在内存中创建了一个名为 a 的变量,并把它指向 'ABC' 。

也可以把一个变量 a 赋值给另一个变量 b,这个操作实际上是把变量 b 指向变量 a 所指向的数据,

常量

        所谓常量就是不能变的变量,比如常用的数学常数π就是一个常量。

        最后解释一下整数的除法为什么也是精确的。在Python中,有两种除法,一种除法是 / :

>>> 10 / 3
3.3333333333333335

        / 除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 9 / 3
3.0

        还有一种除法是 // ,称为地板除,两个整数的除法仍然是整数:

>>> 10 // 3
3

        因为 // 除法只取结果的整数部分,所以Python还提供一个余数运算,可以得到两个整数相除的余数:

>>> 10 % 3
1

        无论整数做 // 除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的。

字符编码

        捋一捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节。

       总结一下现在计算机系统通用的字符编码工作方式:

        在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码

        ① 用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件。

        ② 浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。

        由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

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

格式化 

        在Python中,采用的格式化方式和C语言是一致的,用 % 实现

        在字符串内部,%s 表示用字符串替换, %d 表示用整数替换,有几个 %? 占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个 %? ,括号可以省略。

        常见的占位符有:

占位符替换内容
%d整数
%f浮点数
%s字符串
%x十六进制整数

format()

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

list

        list是一种有序的集合,可以随时添加和删除其中的元素。

        ① 用 len ( ) 函数可以获得list元素的个数。 

        ② 用索引来访问 list 中每一个位置的元素,记得索引是从 0 开始的,当索引超出了范围时,Python会报一个 InderError 错误,所以要确保索引不要越界,记得最后一个元素的索引是 len(list)- 1。如果要取最后一个元素,除了计算索引位置外,还可以用 -1做索引,直接获取最后一个元素。

        ③ list是一个可变的有序表,所以,可以往list中追加元素到末尾:

>>> classmates.append('Adam')

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

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

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

>>> classmates.pop()

        ⑥ 要删除指定位置的元素,用 pop(i) 方法,其中 i 是索引位置:

>>> classmates.pop(1)
'Jack'

        ⑦ 要把某个元素替换成别的元素,可以直接赋值给对应的索引位置:

>>> classmates[1] = 'Sarah'

tuple

        另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改。

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

        现在,classmates 这个tuple不能变了,它也没有 append( ) ,insert( ) 这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用 classmates[0],classmates[1],但不能赋值成另外的元素。tuple所谓的 "不变" 是说,tuple的每个元素,指向永远不变。即指向 'a ',就不能改成指向 'b' ,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!

条件判断

        根据Python的缩进规则,如果 if 语句判断是 True ,就把缩进的两行print语句执行了,否则,什么也不做。

        也可以给 if 添加一个 else 语句,意思是,如果 if 判断是 False ,不要执行 if 的内容,去把 else 执行了,完全可以用 elif 做更细致的判断,完全可以有多个 elif 

        所以 if 语句的完整形式就是

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

        if 语句执行有个特点,它是从上往下判断,如果在某个判断上是 True ,把该判断对应的语句执行后,就忽略掉剩下的 elif 和else。

再议 input

        input( ) 返回的数据类型是 str,str不能直接和整数比较,必须先把 str 转换成整数。Python提供 int( ) 函数来完成这件事情。

循环

        为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。Python的循环有两种,一种是 for...in 循环,依次把list或tuple中的每个元素迭代出来,所以 for x in 循环就是把每个元素代入变量 x,然后执行缩进块的语句。第二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。

break

        在循环中,break 语句可以提前退出循环。

continue

        在循环过程中,也可以通过 continue 语句,跳过当前的这次循环,直接开始下一次循环。

dict

        Python内置了字典:dict 的支持,dict 全称 dictionary,在其他语言中也称为 map,使用键-值(key-value)存储,具有极快的查找速度。把数据放入dict的方法,除了初始化时指定外,还可以通过key放入:

>>> d['Adam'] = 67

        由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉如果key不存在,dict就会报错。要避免key不存在的错误,有两种办法,一是通过 in 判断 key 是否存在:

>>> 'Thomas' in d
False

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

>>> d.get('Thomas')

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

>>> d.pop('Adam')

        需要牢记的第一条就是dict的key必须是不可变对象

set

        set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

        要创建一个set,需要提供一个list作为输入集合:

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

        注意,set不表示是有序的。通过 add(key) 方法可以添加元素到 set 中,可以重复添加,但不会有效果。通过 remove(key)方法可以删除元素。set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。

再议不可变对象

        上面我们讲了,str是不变对象,而list是可变对象。对于可变对象,比如list,对list进行操作,list内部的内容是会变化的,而对于不可变对象,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值