python基础1--入门语法
1、编码
1.1 编码基础
编码 | 简介 |
---|---|
ASCII | 英文及符号,8bit表示一内容,2**8=1byte |
Unicode | 万国码,32bit表示一内容,2**32=4byte |
UTF-8 | 压缩的Unicode,8bit为一单位,省去高位0. 中文:3byte=24bit |
GBK | 支持简体中文和繁体中文,中文是2字节 |
GB2312 | 简体中文 |
1.2 python编码相关
对于Python默认解释器编码:
- py2: ascii
- py3: utf-8
如果想要修改默认编码,则可以使用:
# -*- coding:utf-8 -*-
# coding=utf-8
注意:对于操作文件时,要按照:以什么编写写入,就要用什么编码去打开。
2、变量
2.1 变量的作用
为某个值创建一个“外号”,以后在使用时候通过此外号就可以直接调用。
2.2变量命名要求
-
变量名只能包含:字母/数字/下划线
-
数字不能开头
-
不能是python的关键字。
[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’,‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’,‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’,‘yield’]
-
建议:
-
见名知意: name = "happier" age= 18
-
用下划线连接:my_age = "18"
-
补充:MyName= 'happier' (驼峰式命名)
# 建议变量名不要用:str/int/list/tuple/set/dict/float
-
Python允许你同时为多个变量赋值。例如:
a = b = c = 1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
您也可以为多个对象指定多个变量。例如:
a, b, c = 1, 2, "john"
以上实例,两个整型对象 1 和 2 分别分配给变量 a 和 b,字符串对象 "john" 分配给变量 c。
3、注释
- 单行注释 #注释
- 多行注释 """注释"""
- 文件注释 文件开头"""内容"""
4、输入输出
4.1 语法格式
差别对比 | 输入 | 输出 |
---|---|---|
python2 | raw_input("输入") | print "输出" |
python3 | input("输入") | print("输出") |
注意:input()获取的数据类型为字符串
4.2 字符串格式化
方式1:%后加元组
-
%s: 字符串占位符
name = input('姓名:') do = input('在干什么:') template = "%s在家,%s。" %(name,do,) #元组,建议最后加逗号 print(template)
-
%d: 整形站位符
template = "我是%s,年龄%d, 职业%s。" %("yhp",23,'dream',) print(template)
-
%%: 输出%
template = "手机的电量是60%%" %() print(template)
方式2:%后加字典
msg = "我是%(n1)s,年龄%(n2)s" % {'n1': 'happier', 'n2': 29, }
print(msg)
方式3:format函数
v0 = "我是{},年龄{}".format('yhp',19)
v1 = "我是{0},年龄{1}".format('yhp',19)
v2 = "我是{0},年龄{1}".format(*('yhp',19,))
print(v0,v1,v2)
v3 = "我是{name},年龄{age}".format(name='yhp',age=18)
v4 = "我是{name},年龄{age}".format(**{'name':'yhp','age':18})
print(v3,v4)
5、运算符
a=10,b=20:
5.1 算数运算符
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分(向下取整) | >>> 9//2 4 >>> -9//2 -5 |
5.2 比较运算符
== | 等于 - 比较对象是否相等 | (a == b) 返回 False。 |
---|---|---|
!= | 不等于 - 比较两个对象是否不相等 | (a != b) 返回 true. |
<> | 不等于 - 比较两个对象是否不相等。python3 已废弃。 | (a <> b) 返回 true。这个运算符类似 != 。 |
> | 大于 - 返回x是否大于y | (a > b) 返回 False。 |
< | 小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。 | (a < b) 返回 true。 |
>= | 大于等于 - 返回x是否大于等于y。 | (a >= b) 返回 False。 |
<= | 小于等于 - 返回x是否小于等于y。 | (a <= b) 返回 true。 |
5.3 赋值运算符
运算符 | 描述 | 实例 |
---|---|---|
= | 简单的赋值运算符 | c = a + b 将 a + b 的运算结果赋值为 c |
+= | 加法赋值运算符 | c += a 等效于 c = c + a |
-= | 减法赋值运算符 | c -= a 等效于 c = c - a |
*= | 乘法赋值运算符 | c *= a 等效于 c = c * a |
/= | 除法赋值运算符 | c /= a 等效于 c = c / a |
%= | 取模赋值运算符 | c %= a 等效于 c = c % a |
**= | 幂赋值运算符 | c **= a 等效于 c = c ** a |
//= | 取整除赋值运算符 | c //= a 等效于 c = c // a |
5.4 逻辑运算符
运算符 | 逻辑表达式 | 描述 | 实例 |
---|---|---|---|
and | x and y | 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 | (a and b) 返回 20。 |
or | x or y | 布尔"或" - 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 | (a or b) 返回 10。 |
not | not x | 布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回 False |
特殊情况:取值
- or
"""
对于 or,如果有遇到 value= 1 or 9
第一个值如果是转换成布尔值如果是真,则value=第一值。
第一个值如果是转换成布尔值如果是假,则value=第二值。
如果有多个or条件,则从左到右依次进行上述流程。
示例:
v1 = 0 or 1
v2 = 8 or 10
v3 = 0 or 9 or 8
"""
- and
"""对于and,如果遇到 value= 1 and 9 这种情况
如果第一个值转换成布尔值是True,则value=第二个值。
如果第一个值转换成布尔值是False,则value=第一个值。
如果有多个and条件,则从左到右依次进行上述流程。
示例:
v1 = 1 and 9
v2 = 1 and 0
v3 = 0 and 7
v4 = 0 and ""
v5 = 1 and 0 and 9
"""
- 结合
# 先看and再看or
# v1 = 1 and 9 or 0 and 6
# print(v1)
-
优先级
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为()>not>and>or,同一优先级从左往右计算。
5.5 成员运算
算符 | 描述 | 实例 |
---|---|---|
in | 如果在指定的序列中找到值返回 True,否则返回 False。 | x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 |
not in | 如果在指定的序列中没有找到值返回 True,否则返回 False。 | x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。 |
5.6身份运算符
运算符 | 描述 | 实例 |
---|---|---|
is | is 是判断两个标识符是不是引用自一个对象 | x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False |
is not | is not 是判断两个标识符是不是引用自不同对象 | x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。 |
注:id() 函数用于获取对象内存地址。
is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
5.7 逗号运算符
- a,b=b,a 交换两个值
- a,b=取值
5.8 优先级
算数>比较>赋值>逻辑(not>and>or)
6、流程控制
6.1 if语句
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……
6.2 三目运算
v = 前面 if 条件语句 else 后面
#如果条件成立,"前面"赋值给v,否则后面赋值给v.
v = a if a>b else b # 取a和b中值较大的赋值给v
# 让用户输入值,如果值是整数,则转换成整数,否则赋值为None
data = input('请输入值:')
value = int(data) if data.isdecimal() else None
7、while循环语句
7.1 格式
while 条件语句:
执行语句
#打印1 2 3 4 5 6 8 9 10
count = 1
while count <= 10:
if count == 7:
pass
else:
print(count)
count = count + 1
7.2 关键字break
作用:终止当前循环.
while True:
print("你好")
while True:
print(666)
break
7.3 关键字continue
本次循环遇到continue,则不再继续往下走,返回条件语句继续判断.
count = 0
while count <=9:
count += 1
if count==7:
continue # 本次循环如果遇到continue,则不在继续往下走,而是回到while条件位置。
print(count)
7.4 while else 结构
count = 1
while count < 10:
print(count)
count = count + 1
# if count==7:
# break
else: # 不再满足while后的条件时才触发。break结束循环不触发
print('ELSE代码块')
print('结束')
8、for循环
8.1 格式
for iterating_var in sequence:
statements(s)
8.2 使用方式1
for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
for letter in 'Python': # 第一个实例
print('当前字母 :', letter)
fruits = ['banana', 'apple', 'mango']
for fruit in fruits: # 第二个实例
print('当前水果 :', fruit)
8.3 使用方式2
另外一种执行循环的遍历方式是通过索引
fruits = ['banana', 'apple', 'mango']
for index in range(len(fruits)):
print('当前水果 :', fruits[index])