python-字符串+变量
变量
- 程序=数据结构+算法
- 变量就是可以重复使用的一个量,或者叫一个代号
- 变量命名的规则
- 变量命名可以包含数字,大小写字母,下划线或者更多,但是我们不推荐除了前三种内容之外的符号
- 数字不可以打头
- 4man, 5for 是不可以的
- man4, for5是可以的
- 一般在python中,以下划线开头的内容具有特殊含义,不建议使用
- 比如 _age, _name,理论可以,但强烈不推荐,包括但不限于一个下划线开头和两个连续下划线开头
- 大小写不一样,俗称大小写敏感
- ForMan 跟 forMan不是一个变量名称
- 推荐:
- 使用具有固定含义的英文单词或者缩写, srv=server skt=socket,一般以posix命名规则为主
- 驼峰命名法
- 名称以单词自动连接,且每个单词首字母大写
- 大驼峰,每个单词第一个字母均大写
- 在Python中给类命名使用此法
- MyFirstLove, IntOne
- 小驼峰,类似大驼峰,但第一个字母小写
- 在Python中一般给普通变量或者函数命名
- myFirstLove, intOne
- posix写法
- 多个单词用下划线链接
- 单词全部小写
- my_first_love, int_one
- 大驼峰,每个单词第一个字母均大写
- 名称以单词自动连接,且每个单词首字母大写
- 保留字和关键字
- 变量命名必须避开,不能跟关键字和保留字重复
- class, def, break,for
1 # 查看关键字的方法 2 import keyword #引入关键字模块 3 # 打印出系统全部关键字 4 print(keyword.kwlist) 5 6 7 8 ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
变量声明
- var_name = var_value
- var1 = var2 = var3 = var_value
- var1, var2, var3 = v1, v2, v3
1 # 定义变量age,把18放入变量age中 2 age = 18 3 print(age) 4 print(18) 5 6 # 给age1, age2, age3 放入同样一个内容或值 7 age1 = age2 = age3 = 18 8 print(age1) 9 print(age2) 10 print(age3) 11 12 # 一行内给多个变量赋值 13 age4, age5, age6 = 12, 21, 45 14 print(age4) 15 print(age5) 16 print(age6) 17 18 19 20 21 22 23 18 24 18 25 18 26 18 27 18 28 12 29 21 30 45
变量类型
- 严格意义上讲,python只有一个类型
- 标准数据一共六种
- 数字类型Number
- 字符串类型str
- 列表list
- 元组tuple
- 字典 Dictionary
- 集合 set
Number数字类型
- 数字类型没有大小限制
整数
- 没有小数部分,表示个数的数字
- 自然数,0,负自然数
- 整数分进制
- 二进制
- 计算机常用
- 是计算机唯一能直接理解的数字
- 表示为0b开头的0,1代码
- 例如 0b01101, 0b10001
- 八进制
- 不常用
- 以0o开头的包含0-7的数字
- 十六进制
- 缝16进1
- 其实是每四位二进制表示一位十六进制数
- 包含0-9, a-f
- 数字上以0x开头表示
- 十进制
- 18, 89, 178
1 age = 18 2 print(18) 3 4 age = 0b10010 5 print(age) 6 7 age = 0o102 8 print(age) 9 10 age = 0xff #十六进制ff表示二进制的1111 1111 11 print(age) 12 13 14 15 16 18 17 18 18 66 19 255
- 18, 89, 178
- 二进制
浮点数
- 小数
- 计算机里边表示浮点数可以有条件省略
- 3.1415
- 3.
- 0.5
- .5
- 科学计数法
- 定义跟数学定义
- 写法是用e/E后面跟整数表示10的指数
- 176.23 == 1.7634e2
- 0.876 == 8.76e-1
1 height = 156.34 2 print(height) 3 4 shili = .2 5 print(shili) 6 7 shili = .6 8 print(shili) 9 10 11 12 13 156.34 14 0.2 15 0.6
复数complex
- 定义同数学定义一致
- 一个由实部和虚部构成的数字
- 虚部用j/J表示
- 5+3j
- 3j
- (3j)
布尔值
- 表示真假的值
- 只有两个值, True/False
- 布尔值可以跟数字直接操作
1 #布尔值操作 2 age = 18 + True 3 print(age) 4 5 6 19
字符串
- 用来表示一串文字信息
- 如何表示
- 单引号
- 双引号
- 三引号(三个单引号或者三个双引号)
- 能够扩起多行信息
- 单双引号交错使用
1 love = "i love wangxiaojing" 2 print(love) 3 4 love = '我爱王晓静' 5 print(love) 6 7 # 单双引号交错使用的例子 8 # <a style="color:red"> 哈哈哈</a> 9 # 用引号表示上面字符串 10 html = 'a style="color:red">哈哈哈</a>' 11 12 13 htmls = ''' 14 i love wangxiaojing 15 我爱王晓静 16 哈哈哈哈哈 17 18 ''' 19 20 print(htmls) 21 22 23 24 25 26 27 i love wangxiaojing 28 我爱王晓静 29 30 i love wangxiaojing 31 我爱王晓静 32 哈哈哈哈哈
字符串
- 转义字符
- 格式化
- 内建函数(后延)
转义字符
- 用一个特殊的方法表示出一系列不方便写出的内容,比如回车键,换行键,退格键
- 借助反斜杠字符,一旦字符串中出现反斜杠,则反斜杠后面一个火几个字符表示已经不是原来的意思了,进行了转义
- 在字符串中,一旦出现反斜杠就要加倍小心,可能由转义字符出现
- 不同系统对换行操作有不同的表示
- windows: \n
- Linux: \r\n
1 s = "i love lixiaojing" 2 print(s) 3 4 5 i love lixiaojing 6 7 8 # 如果想表示出Let‘s go来 9 # 1. 可以使用嵌套引号,即外层使用双引号 10 # 2. 转义字符 11 s = "Let's go" 12 print(s) 13 14 #\' == ' 15 ss = 'Let\'s go' 16 print(ss) 17 18 # \\ = \ 19 sss = "c:\\user" 20 print(sss) 21 22 # 回车换行符 23 s1 = "I love \r\n wangixoajing" 24 print(s1) 25 26 27 28 Let's go 29 Let's go 30 c:\user 31 I love 32 wangixoajing
字符串的格式化
- 把字符串按照一定格式打印或者填充
- 格式化由两种方法
- 利用百分号(%)
- 利用format函数
s = "xxx 您好, 我们图灵学院开课了,免费的Python呀,不学白不学,学了也白学。"
利用百分号格式化
- 在字符串中,利用%表示一个特殊的含义,表示对字符进行格式化
- %d: 此处应该放入一个整数
- %s: 表示此处应该放入一个字符串
s = "I love %s" # 下面打印,直接把%s作为字符串的一个内容打印出来 print(s) I love %s print("I love %s"%"wangxiaojing") I love wangxiaojing print( s%"wangxiaojing") I love wangxiaojing
s = "I am %d years old" # 留意下面两句话的区别和结果 print(s) print(s%18) I am %d years old I am 18 years old s = "I am %s, i am %d years old" print(s) # 注意以下表达的出错原因 # 如果字符串中由占位符,则由几个占位符必须用几个实际内容代替,或者一个也不要 #print(s%"tulingxueyuan") # 如果出现多个占位符,则相应内容需要用括号括起来 print(s%("tulingxueyuan", 18)) I am %s, i am %d years old I am tulingxueyuan, i am 18 years old
format函数格式化字符串
- 直接用format函数进行格式化
- 推荐使用这种方法
- 在使用上,以{}和:代替%号,后面用format带参数完成
s = "I love {}".format("LiXiaojing") print(s) s = "Yes, i am {1} years old, I love {0} and i am {1} years old".format("Tulingxueyuan", 18) print(s) I love LiXiaojing Yes, i am 18 years old, I love Tulingxueyuan and i am 18 years old
None
- 表示什么都没有
- 如果函数没有返回值,可以返回 None
- 用来占位置
- 用来接触变量绑定
表达式
- 由一个或者几个数字或者变量和运算符组合成的一行代码
- 通常会返回一个结果
运算符
- 由一个以上的值经过变化得到新值的过程就叫运算
- 用于运算的符号叫运算符
- 运算符分类:
- 算数运算符
- 比较或者关系运算符
- 赋值运算符
- 逻辑运算符
- 位运算
- 成员运算
- 身份运算符
算数运算符
- 进行算数运算的符号
- python没有自增自减运算符
# +,-跟正常算术运算符一模一样 a = 9+3-2 print(a) # 乘号用星号(*)代替 a = 9 * 4 print(a) # 除号用斜杠(/)代替 # 在Python2.x 和python3.x 中,除号(/)结果可能不一致,此处以3系列为准 a = 9/4 print(a) # % 取余运算 # 两个数字相除应该有商数有余数 # % 只会得到余数 a = 9 % 4 print(a) # // 表示取商运算,也叫地板除 a = 9 // 4 print(a) # ** 表示幂运算 a = 9 ** 4 print(a) a = 3 ** 3 print(a) 10 36 2.25 1 2 6561 27
比较运算符
- 对两个变量或者值进行比较的运算符
- 比较的结果是布尔值,即True/False
# == , 等于号 a = 3 ** 4 # 下面语句执行书序是 # 1, 计算 a == 80 # 2. 把结果放入b中 b = a == 80 print(b) # != 不等于 print( 9 != 8 ) # > 大于 # < 小于 # >= 大于等于 # <= 小于等于 False True
赋值运算符
# = , 赋值 a = 0 c = a = 4 # +=, 是缩写, a = 0 a += 7 # a = a+ 7 的缩写 print(a) # 所有数学运算符都有缩写形式 # -=, ×=, /=, //=, %=, **=,都是缩写形式 7
逻辑运算符
- 对布尔值进行计算的符号
- and 逻辑与
- or 逻辑或
- not 逻辑非
- python中逻辑运算没有异或运算
- 运算规则:
- and看做乘法, or看做加法,
- True看做1, False看做0
- 则逻辑运算就能转换成整数数学运算
- 最后结果如果是0则为False, 否则为True
- 逻辑运算的短路问题
- 逻辑运算式,按照运算顺序计算,一旦能够确定整个式子未来的值,则不再进行计算,直接返回
# 逻辑运算符案例 a = True b = False c = True # 以下式子等价于 d = 1 * 0 + 1 d = a and b or c print(d) d = a or b and a print(d) True True
# 逻辑运算的短路案例 # 下面的逻辑表达式,a的值一定是True,则运行到or的时候,整个表达式不在向下计算 a = True or xxxxxxxxxxx # 下面表达式,如果xxx中包含赋值表达式,则结果很难预期 # 代码示例(伪代码) b = 0 a = a or (b=9) and 6 # 假定上面表达式如果没有语法错误 # 则b最终的值应该是0而不是9 print(b) print(a) File "<ipython-input-43-bb4253784911>", line 9 a = a or (b=9) and 6 ^ SyntaxError: invalid syntax
- 逻辑运算式,按照运算顺序计算,一旦能够确定整个式子未来的值,则不再进行计算,直接返回
成员运算符号
- 用来检测某一个变量是否是另一个变量的成员
- in
- not in
# 案例 l = [1,2,3,4,5] a = 7 b = a in l print(b) a = 4 print(a in l) print(a not in l) False True False
身份运算
- is: 用来检测两个变量是否是同一个变量
- 语法就是 var1 is var2
- is not: 两个变量不是同一个变量
a = 9 b = 9 print( a is b) a = "I love wangxiaojing" b = "I love wangxiaojing" print( a is b) True False
运算符的优先级问题
-
永远记住,括号具有最高优先级
-
优先级表格
** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> << 右移,左移运算符 & 位 'AND' ^ | 位运算符 <= < > >= 比较运算符 <> == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 not or and 逻辑运算符
程序结构
- 顺序
- 分支
- 循环