python---基础语法
标识符
标识符是编程时使用的名字,用于给变量、函数、语句块等命名,Python 中标识符由字母、数字、下划线组成,不能以数字开头,区分大小写。
以下划线开头的标识符有特殊含义。
单下划线开头的标识符,如:_xxx
,表示不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *
导入;
双下划线开头的标识符,如:__ xx
,表示私有成员;
双下划线开头和结尾的标识符,如:__ xx__
,表示 Python 中内置标识,如:__init__()
表示类的构造函数。
关键字
break | for | pass | class | from | |
---|---|---|---|---|---|
continue | global | raise | def | if | return |
del | import | try | elif | in | while |
else | is | with | except | lambda | yield |
缩进
Python 不使用 {} 来控制类、函数、逻辑判断等,而是使用缩进,缩进的空格可变。如下所示:
if True:
print(True)
else:
print(False)
上面表中是 Python 中的关键字(保留字),我们在自定义标识符时不能使用关键字。
注释
Python 中单行注释使用 #,多行注释使用三个单引号(‘’')或三个双引号(“”")。如下所示:
# 我是单行注释
'''
我是多行注释
我是多行注释
'''
"""
我是多行注释
我是多行注释
"""
特殊注释
- #! usr/bin/python
一种常见的Unix/Linux脚本文件开头,它告诉系统使用哪个Python解释器来执行该脚本。这里的#!称为“shebang”或“hash bang”,紧跟其后的usr/bin/python
指定了Python解释器的位置(在这个例子中通常是系统的usr目录下的bin目录下)。当用户运行这个脚本时,操作系统会依据这个路径来启动Python,而不是直接打开文本编辑器。 - #! usr/bin/env python
常见的Linux或Unix系统命令行指令,它的作用是查找环境变量PATH指定目录下的Python解释器,并执行该Python程序。当你在终端输入这个命令时,它会定位到系统路径中最先找到的Python版本(通常是默认安装的),然后运行紧跟其后的Python脚本文件。
例如,如果你在命令行输入 usr/bin/env python myscript.py
,系统会在usr/bin目录下寻找名为 python 的可执行文件,执行名为 myscript.py 的Python文件。这种方法可以避免因为用户系统里有多个Python版本导致的命令冲突问题。
【在Linux系统中应用,Windows系统中直接注释掉了】
- #encoding=utf-8
一种编码声明,通常出现在Python源代码的开头,用于指示文件的字符编码。在UTF-8编码模式下,Python程序能够正确处理包含中文、日文、韩文等非ASCII字符的文本内容。如果不写这一行,如果文件中的非英文字符可能会被错误地解析或显示为乱码。
【python3默认支持中文,python2默认不支持中文】
引号
Python 可以使用引号(‘)、双引号(")、三引号(’‘’ 或 “”")来表示字符串,引号的开始与结束须类型相同,三引号可以由多行组成。如下所示:
id = '001'
name = "张三"
skill = '''
唱歌
跳舞'''
skill = """
唱歌
跳舞"""
变量
在 Python 中,当你给它赋值时就会创建变量:Python 没有用于声明变量的命令。变量在您第一次为其赋值时创建。变量引用着某个数值,并且可以改变这个引用。
定义变量
变量名 = 值【赋值语句,将右边的值的存储地址的唯一标识赋给变量名】
变量名1,变量名2 = 值1,值2
变量名1=变量名2 = 值
注意事项
一个变量只能引用一个数值;变量名使用之前一定要赋值
命名规范
- 字母数字下划线
- 见名知意
- 驼峰标识
- 非关键字
- 区分大小写
数据类型
为什么要区分数据类型
- 区分存储空间
- 根据不同数据类型的特性,做不同的数据处理
具体数据类型
-
Numbers(数值类型)
- int
- long
- float
- conplex =>a+bj / complex(a,b) Bool(布尔类型)
- True
- False String(字符串)
- ‘abc’
- “abc”
- ‘’‘字符串’‘’
- “”" 字符串 “”" List(列表)
- [1,2,3] Set(集合)
- set([1,2]) Tuple(元组)
- ("王顺子“,18) Dictory(字典)
- {name:“王顺子”,age:18} NoneType(空类型)
- None
查看数据类型
print(type(变量名)
数据类型转换
方式
类型(需要转换的值)
转换图
函数 | 说明 |
---|---|
int(x,[,base]) | 将x转化为一个整数 |
str(x) | 将x转换为一个字符串 |
float(x) | 将x转换为一个浮点数 |
repr(x) | 将x转换为一个表达式字符串 |
chr(x) | 将x转换为一个字符 |
Unichr(x) | 将x转换为一个unicode字符 |
ord(x) | 将x转换为一个整数值 |
hex(x) | 将x转换为一个十六进制字符串 |
oct(x) | 将x转换为一个八进制字符串 |
eval(str) | 计算字符串中的有效表达式,并返回对象 |
tuple(s) | 将序列s转换为一个元组 |
list(s) | 将序列s转换为一个列表 |
动态类型/静态类型
静态类型是指编译的时候确定的,后期无法修改
动态类型是指运行时进行判定的,可以动态修改
强类型/弱类型
强类型指类型比较强势,不轻易随着环境的变化而变化。eg:‘a’+1 直接报错
弱类型值类型敝教教柔弱,不同的环境下,很容易被改变 eg: ‘a’+1 ‘a1’
【python是属于强类型,动态类型的语言】
运算符
算数运算符
+:加法运算符
-:减法运算符
*:乘法运算符
**:幂运算符
/:除法运算符
//:整除运算符
%:求模运算符
=:赋值运算符
复合运算符
+=
-=
*=
%=
**=
//=
eg:a += 值 => a= a + 值
比较运算符
< | > | != | <> | >= | <= | == | is |
---|---|---|---|---|---|---|---|
python2版本支持,等同于!= | 比较值 | 比较唯一标识 |
逻辑运算符
not | and | or |
---|---|---|
非 | 与 | 或 |
not True | True and True | True or False |
注意:
- 非布尔类型的值,如果作为真假来判定,一般都是非零即真,非空即真;
- 整个逻辑表达式的结果不一定都是True和False
print(bool(""))
print(bool("0"))
输入输出
输入
python2.x
- raw_input
- 格式:result = raw_input(“提示信息”)
- 功能:会等待用户输入内容,知道用户按下enter键;会将用户输入的内容当作“字符串”进行处理
- input
- 格式:result = input(“提示信息”)
- 功能:会等待用户输入内容,直到用户按下enter建;会将用户输入的内容当作“代码”进行处理
python3.x
- input
- 格式:result = input("提示信息“)
- 功能:
- 会等待用户输入内容,直到用户按下Enter;会将用户输入的内容当做"字符串",传递给接收的变量。
- 如果说想要实现类似于Python2中的input功能,可以再使用eval()函数
输出
python2.x
print 语句 格式:print xxx
- 输出值
print 值
- 输出变量
print 变量名
- 输出多个变量名
print 变量名1, 变量名2
- 格式化输出
- %写法
print “随意内容…”,占位符1," … ", 占位符2
print "我的名字是”,name,",年龄是",age
print “随意内容…占位符1, … , 占位符2, …”%(变量1, 变量2)
print "我的名字是%s,我的年龄是%d"%(name,age)
- format写法
print “随意内容…{索引}, … , {索引}, …”.format(值1, 值2)
print"我的名字是{0},年龄是{1}".format(name,age)
- %写法
- 输出到文件中
file = open("test.txt", "w")
print >> file, "i am sz"
- 输出不自动换行
print a,
print b,
print c,
- 输出的各个数据, 使用分隔符分割
print "-".join(["a","b","c"])
python3.x
print函数
print(values, sep, end, file, flush)
- values
需要输出的值。多个值, 使用 “,” 进行分割 - sep
分割符。多个值, 被输出出来之后, 值与值之间, 会添加指定的分隔符 - end
输出完毕之后, 以指定的字符, 结束默认是换行 ‘\n’ - file
表示输出的目标
默认是标准的输出(控制台)。
file=sys.stdout
还可以是一个可写入的文件句柄
f = open("xxx", "w")
file=f
- 输出值
print (值)
- 输出变量
print (变量名)
- 输出多个变量名
print (变量名1, 变量名2)
- 格式化输出
- %写法
print “随意内容…占位符1, … , 占位符2, …”%(变量1, 变量2)
print "我的名字是%s,我的年龄是%d"%(name,age)
- format写法
print “随意内容…{索引}, … , {索引}, …”.format(值1, 值2)
print"我的名字是{0},年龄是{1}".format(name,age)
- 补充: 占位格式符
格式:%[(name)][flags][width][.precision]typecode
使用中括号[]包含的部分, 代表可选- (name)
用于选择指定的名称对应的值
print("我的数学分数是%(ms)d,我的数学分数是%(es)d"%({"es":englishScore,"ms":mathScore}))
- flags
- 空
表示右对齐print("%d"%mathScore)
- “-”
表示左对齐。print("%-10d"%mathScore)
- 空格
’ '为一个空格
表示在正数的左侧填充一个空格,从而与负数对齐。print("% d"%mathScore)
- 0
0表示位首不够时使用0填充。print("%02d : %02d"%(min,sec))
- 空
- width表示显示宽度
- .precision表示小数点后精度
- typeCode
- 数值
i/d #将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置
o #将整数转换成 八 进制表示,并将其格式化到指定位置
x #将整数转换成十六进制表示,并将其格式化到指定位置
e #将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
E #将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)
f #将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)
F #同上
g #自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)
G #自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;) - 字符串
s #获取传入对象的__str__方法的返回值,并将其格式化到指定位置print("%s"%"abc")
r #获取传入对象的__repr__方法的返回值,并将其格式化到指定位置
c #整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置`print(“%c” % 19997) - 特殊
% #当字符串中存在格式化标志时,需要用 %%表示一个百分号print("%d%%" % score)
注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式%b
- 数值
- (name)
- %写法
- 输出到文件中
f = open("test.txt", "w")
print("i am sz", file=f)
# 标准输出
print("xxxxx",file=sys.stdout)
- 输出不自动换行
print("hello", "i am sz", end="")
- 输出的各个数据, 使用分隔符分割
print("i", "am", "sz", sep="---")
项目小结
# Python版本的问题
# 思路, 语法 -> 工具
# Python3.x
# 使用注释, 理清楚, 具体的实现步骤
# 代码填充
# 输入
# 身高
personHeight = input("请输入身高(m):")
personHeight = float(personHeight)
# 体重
personWeight = input("请输入体重(kg):")
personWeight = float(personWeight)
# 年龄
personAge = input("请输入年龄:")
personAge = int(personAge)
# 性别
personSex = input("请输入性别(男:1 女:0):")
personSex = int(personSex)
# 处理数据
# 计算体脂率
# BMI = 体重(kg) / (身高 * 身高)(米)
# 体脂率 = 1.2 * BMI + 0.23 * 年龄 - 5.4 - 10.8*性别(
BMI = personWeight / (personHeight * personHeight)
TZL = 1.2 * BMI + 0.23 * personAge - 5.4 - 18.8 * personSex
# 判定体脂率, 是否在正常的标准范围之内
# 正常成年人的体脂率分别是男性15%~18%和女性25%~28%
# TZL MIN MAX
# 0.10 1 0
minNum = 0.15 + 0.10 * (1 - personSex)
maxNum = 0.18 + 0.10 * (1 - personSex)
result = minNum < TZL < maxNum
# 输出
# 告诉用户, 是否正常
print("你的体脂率, 是%f" % TZL)
print("你的体脂率, 是否符合标准", result)