Python基础语法
Posted mChenys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础语法相关的知识,希望对你有一定的参考价值。
目录
1.注释的使用
单行注释
以 #
开头,在代码的上方说明, 示例代码如下:
(1) 以 #
开头,在代码的上方说明, 示例代码如下:
# 这是第一个单行注释
print("hello python")
为了保证代码的可读性,#
后面建议先添加一个空格,然后再编写相应的说明文字
(2) 以 #
开头,在代码的右侧(旁边)说明, 示例代码如下:
print("hello python") # 输出 `hello python`
为了保证代码的可读性,注释和代码之间 至少要有 两个空格
多行注释
要在 Python 程序中使用多行注释,可以用 一对 连续的 三个 引号(单引号和双引号都可以)
示例代码如下:
"""
这是一个多行注释
在多行注释之间,可以写很多很多的内容……
"""
print("hello python")
2. 变量的使用
变量定义
在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
等号=用来给变量赋值,= 左边是一个变量名, = 右边是存储在变量中的值, 示例代码如下:
# 定义 qq 号码变量
qq_number = "1234567"
# 定义 qq 密码变量
qq_password = "123"
# 在程序中,如果要输出变量的内容,需要使用 print 函数
print(qq_number)
print(qq_password)
此外,还可以用 其他变量的计算结果 来定义变量, 变量定义之后,后续就可以直接使用了, 例如:
# 定义价格变量
price = 8.5
# 定义购买重量
weight = 7.5
# 计算金额
money = price * weight
print(money)
变量名 只有在 第一次出现 才是 定义变量,变量名 再次出现,是直接使用之前定义过的变量, 变量是可以重写赋值的.
money = money - 5
变量的类型
在内存中创建一个变量,会包括:
- 变量的名称
- 变量保存的数据
- 变量存储数据的类型
- 变量的地址
在 Python 中定义变量是 不需要指定类型, 数据类型可以分为 数字型 和 非数字型 - 数字型
- 整型 (int)
- 浮点型(float)
- 布尔型(bool)
- 真 True 非 0 数 —— 非零即真
- 假 False 0
- 复数型 (complex)
- 主要用于科学计算
- 非数字型
- 字符串
- 列表
- 元组
- 字典
- set(集合)
提示:在 Python 2.x 中,整数 根据保存数值的长度还分为:int(整数)long(长整数), 使用 type 函数可以查看一个变量的类型
不同类型变量之间的计算
(1) 数字型变量 之间可以直接计算
在 Python 中,两个数字型变量是可以直接进行 算数运算的, 如果变量是 bool 型,在计算时True 对应的数字是 1,False 对应的数字是 0
(2) 字符串变量 之间使用 + 拼接字符串
在 Python 中,字符串之间可以使用 + 拼接生成新的字符串
first_name = "张"
last_name = "三"
print(first_name + last_name)
(3) 字符串变量 可以和 整数 使用 * 重复拼接相同的字符串
(4) 数字型变量 和 字符串 之间 不能进行其他计算
变量的输入
所谓 输入,就是 用代码 获取 用户通过 键盘 输入的信息, 在 Python 中,如果要获取用户在 键盘 上的输入信息,需要使用到 input 函数, 键盘输入的任何内容 Python 都认为是一个 字符串
类型转换
有时候,我们需要对数据内置的类型进行转换,数据类型的转换,一般情况下你只需要将数据类型作为函数名即可。
(1) 隐式类型转换
在隐式类型转换中,Python 会自动将一种数据类型转换为另一种数据类型,不需要我们去干预。
对两种不同类型的数据进行运算,较低数据类型(整数)就会转换为较高数据类型(浮点数)以避免数据丢失。如下所示:
num_int = 123
num_flo = 1.23
num_new = num_int + num_flo
print("datatype of num_int:", type(num_int))
print("datatype of num_flo:", type(num_flo))
print("datatype of num_new:", type(num_new))
print("Value of num_new:", num_new)
输出的结果:
datatype of num_int: <class 'int'>
datatype of num_flo: <class 'float'>
datatype of num_new: <class 'float'>
Value of num_new: 124.23
可以看到int和float运算后的类型变成了float
变量的格式化输出
在 Python 中可以使用 print 函数将信息输出到控制台,如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符,% 被称为 格式化操作符,专门用于处理字符串中的格式,包含 % 的字符串,被称为 格式化字符串,% 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
语法格式如下:
print("格式化字符串" % 变量1)
print("格式化字符串" % (变量1, 变量2...))
例如:
name = "张三"
student_no = 110
price = 4.5
weight = 3
money = price * weight
scale = 0.1
print("我的名字叫 %s,请多多关照!" % name)
print("我的学号是 %06d" % student_no)
print("苹果单价 %.02f 元/斤,购买 %.02f 斤,需要支付 %.02f 元" % (price, weight, money))
print("数据比例是 %.02f%%" % (scale * 100))
输出结果:
我的名字叫 张三,请多多关照!
我的学号是 000110
苹果单价 4.50 元/斤,购买 3.00 斤,需要支付 13.50 元
数据比例是 10.00%
变量的命名
(1) 标识符
标示符就是程序员定义的 变量名、函数名
标示符可以由 字母、下划线 和 数字 组成, 不能以数字开头,不能与关键字重名
(2) 关键字
关键字 就是在 Python 内部已经使用的标识符, 它具有特殊的功能和含义,开发者 不允许定义和关键字相同的名字的标示符,通过以下命令可以查看 Python 中的关键字
通过以下代码可以查看内置的关键字
import keyword
print(keyword.kwlist)
输出结果:
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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']
命名规则 可以被视为一种 惯例,并无绝对与强制 目的是为了 增加代码的识别和可读性,Python 中的 标识符 是 区分大小写的,在定义变量时,为了保证代码格式,= 的左右应该各保留一个空格,在 Python 中,如果 变量名 需要由 二个 或 多个单词 组成时,可以按照以下方式命名:
- 每个单词都使用小写字母
- 单词与单词之间使用 _下划线 连接
3. 判断语句
if 语句使用
在 Python 中,if 语句 就是用来进行判断的,格式如下:
if 要判断的条件:
条件成立时,要做的事情
……
例如:
# 1. 定义年龄变量
age = 18
# 2. 判断是否满 18 岁
# if 语句以及缩进部分的代码是一个完整的代码块
if age >= 18:
print("可以进网吧嗨皮……")
else语句使用
else语句可以在不满足条件的时执行,格式如下:
if 要判断的条件:
条件成立时,要做的事情
……
else:
条件不成立时,要做的事情
……
注意:if 和 else 语句以及各自的缩进部分共同是一个 完整的代码块
elif语句使用
如果希望增加一些条件,条件不同,需要执行的代码也不同 时,就可以使用 elif,语法格式如下:
if 条件1:
条件1满足执行的代码
……
elif 条件2:
条件2满足时,执行的代码
……
elif 条件3:
条件3满足时,执行的代码
……
else:
以上条件都不满足时,执行的代码
……
注意:elif 和 else 都必须和 if 联合使用,而不能单独使用,可以将 if、elif 和 else 以及各自缩进的代码,看成一个 完整的代码块
if语句的嵌套使用
if 条件 1:
条件 1 满足执行的代码
……
if 条件 1 基础上的条件 2:
条件 2 满足时,执行的代码
……
# 条件 2 不满足的处理
else:
条件 2 不满足时,执行的代码
# 条件 1 不满足的处理
else:
条件1 不满足时,执行的代码
……
4. 运算符
算数运算符
在 Python 中 * 运算符还可以用于字符串,计算结果就是字符串重复指定次数的结果
比较运算符
另外,Python 2.x 中判断 不等于 还可以使用 <> 运算符
逻辑运算符
Python 中的 逻辑运算符 包括:与 (and)/或 (or)/非 (not) 三种
赋值运算符
在 Python 中,使用 = 可以给变量赋值
运算符的优先级
和数学中的运算符的优先级一致,在 Python 中进行数学计算时,同样也是:先乘除后加减, 同级运算符是 从左至右 计算, 可以使用 () 调整计算的优先级
以下表格的算数优先级由高到最低顺序排列
5. 循环语句
while 循环基本使用
循环的作用就是让 指定的代码 重复的执行,while 循环最常用的应用场景就是 让执行的代码 按照 指定的次数 重复 执行, 基本语法如下:
while 判断条件 :
# 条件成立,重复执行
例如计算 0 ~ 100 之间所有偶数的累计求和结果
result = 0
i = 0
while i < 100:
if i % 2 == 0:
result += i
i += 1
print("偶数结果是%d" % result)
注意:循环结束后,之前定义的计数器条件的数值是依旧存在的
break 和 continue关键字
break 和 continue 是专门在循环中使用的关键字,break 某一条件满足时,退出循环,不再执行后续重复的代码,continue 某一条件满足时,跳过后面的代码, 重新进入下一次循环
(1) break
在循环过程中,如果 某一个条件满足后,不再希望 循环继续执行,可以使用 break 退出循环, 例如:
i = 0
while i < 10:
# break 某一条件满足时,退出循环,不再执行后续重复的代码
if i == 3:
break
print(i)
i += 1
print("over")
输出结果:
0
1
2
over
(2) continue
在循环过程中,某一条件满足时,跳过后面的代码, 重新进入下一次循环,可以使用 continue ,例如:
i = 0
while i < 5:
if i == 3:
i += 1
continue # 循环执行到此会重新进入循环
# 重复执行的代码
print(i)
i += 1
输出结果:
0
1
2
4
while 循环嵌套
while 嵌套就是:while 里面还有 while
while 条件 1:
条件1满足时,做的事情
...(省略)...
while 条件 2:
条件2满足时,做的事情
...(省略)...
处理条件 2
处理条件 1
使用示例
(1) 在控制台连续输出五行 *,每一行星号的数量依次递增
row = 0
while row < 5:
row += 1
print("*" * row)
输出结果:
*
**
***
****
*****
假设 Python 没有提供 字符串的 * 操作 拼接字符串,那么就需要使用嵌套循环来解决了, 代码如下:
row = 0
while row < 5:
row += 1
col = 0
while col < row:
print("*", end="") # 默认end="\\n",表示在结尾处输出一个换行符,这里替换为"",表示不换行
col += 1
print("")
(2) 在控制台中输出九九乘法表
# 定义起始行
row = 0
while row < 9:
row += 1
# 定义起始列
col = 1
while col <= row:
# end="\\t" 表示每一行后面带一个制表符
print("%d * %d = %d" % (col, row, row * col), end="\\t")
col += 1
print("")
结果如下:
注意 常用的的转义字符有
\\ : 反斜杠符号
’ : 单引号
" :双引号
\\n :换行
\\t : 横向制表符
\\r : 回车
while…else循环
语法如下:
while 布尔表达式:
代码块
else:
代码块
当 while 循环正常执行完的情况下,执行 else 输出,如果 while 循环中执行了跳出循环的语句,比如 break ,将不执 行 else 代码块的内容。
例如:
i=0
while i<5:
print(i)
i+=1
else:
print('hello world')
输出结果:
0
1
2
3
4
hello world
for in 循环
语法如下:
for iterating_var in sequence:
代码块
例如:
# 第一个实例
for letter in 'Python':
print '当前字母 :', letter
# 第二个实例
fruits = ['banana', 'apple', 'mango']
for fruit in fruits:
print '当前字母 :', fruit
# 第三个实例
for index in range(len(fruits)):
print ('当前水果 : %s' % fruits[index])
输出结果:
当前字母 : P
当前字母 : y
当前字母 : t
当前字母 : h
当前字母 : o
当前字母 : n
当前字母 : banana
当前字母 : apple
当前字母 : mango
当前水果 : banana
当前水果 : apple
当前水果 : mango
for…else循环
for … else 表示的意思是else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,和while else是同样的功能,例如:
for num in range(1, 5):
print(num)
else:
print(f"最后一个数是num")
输出结果:
1
2
3
4
最后一个数是4
6. 非数字型变量的使用
前面介绍过Python 中数据类型可以分为 数字型 和 非数字型, 在 Python 中,所有 非数字型变量 都支持以下特点:
- 都是一个 序列 sequence,也可以理解为 容器
- 取值 []
- 遍历 for in
- 计算长度、最大/最小值、比较、删除
- 链接 + 和 重复 *
- 切片
列表
List(列表) 是 Python 中使用 最频繁 的数据类型,列表专门用于存储 一串 信息,列表用 [] 定义,数据 之间使用 , 分隔, 列表的 索引(下标) 从 0 开始
注意:从列表中取值时,如果 超出索引范围,程序会报错
列表常用操作
定义一个列表格式如下:
变量名 = []
常用的方法如下:
从上表中可以看出除了 删除指定索引的数据 和 获取列表长度 的使用较特殊, 其他都是通过列表名.函数名的方式使用. 例如:
name_list = ["zhangsan", "lisi", "wangwu"]
# 添加指定位置的新元素
name_list.insert(0, "tom")
# 末尾追加新元素
name_list.append("jack")
# 修改元素
name_list[1] = "李四"
print(name_list)
# 删除指定位置的元素
del name_list[2]
# 获取列表的长度
count = len(name_list)
print(name_list, count)
输出结果:
['tom', '李四', 'lisi', 'wangwu', 'jack']
['tom', '李四', 'wangwu', 'jack'] 4
列表的遍历
遍历 就是 从头到尾 依次 从 列表 中获取数据,在 Python 中为了提高列表的遍历效率,专门提供的 迭代 iteration 遍历,使用 for 就能够实现迭代遍历, 例如:
name_list = ["zhangsan", "lisi", "wangwu"]
for name in name_list:
print("name=%s" % name)
输出结果:
name=zhangsan
name=lisi
name=wangwu
注意: Python 的 列表 中可以 存储不同类型的数据, 大多数情况下建议列表存储相同类型的数据
元组
元组的定义
Tuple(元组)/'tʌpl/ 与列表类似,不同之处在于元组的 元素不能修改, 元组表示多个元素组成的序列,用于存储 一串 信息,数据 之间使用 , 分隔,元组用 () 定义,元组的 索引 从 0 开始
创建空元组
info_tuple = ()
# 或者
info_tuple = tuple()
元组中 只包含一个元素 时,需要 在元素后面添加逗号
info_tuple = (50, )
元组常用操作
在pycharm中通过元组的名字输入.的时候会看到2个函数, count和index, 使用如下:
info = ("aaa", "aaa", "bbb", "ccc")
print(info.count("aaa"))
print(info.index("ccc"))
输出结果:
2
3
由此可知, count是计算元素在元组中出现的次数, index是获取元素在元组中的索引(下标),从0开始计算。
此外,通过pycharm的提示,发现可以使用__getitem__(索引)方法来获取指定位置的元组元素,例如:
info = ("aaa", "aaa", "bbb", "ccc")
print("第一个元素:%s,最后一个元素:%s" %
(info.__getitem__(0), info.__getitem__(len(info) - 1)))
元组的遍历
遍历 就是 从头到尾 依次 从 元组 中获取数据 ,同样可以用for in来循环, 使用如下:
for item in info:
print(item)
- 在 Python 中,可以使用 for 循环遍历所有 非数字型类型 的变量:列表、元组、字典 以及 字符串
- 在实际开发中,除非 能够确认元组中的数据类型,否则针对元组的循环遍历需求并不是很多
(4) 元组和列表之间的转换
使用 list 函数可以把元组转换成列表
list(元组)
使用 tuple 函数可以把列表转换成元组
tuple(列表)
例如:
# 定义元组info
info = ("aaa", "aaa", "bbb", "ccc")
print("info的内容:", info)
print("info的类型:", type(info))
# 元组转list
info_list = list(info)
print("info_list的内容:", info_list)
print("info_list的类型:", type(info_list))
# list转元组
info_tuple = tuple(info_list)
print("info_tuple的内容:", info_tuple)
print("info_tuple:", type(info_tuple))
输出结果:
info的内容: ('aaa', 'aaa', 'bbb', 'ccc')
info的类型: <class 'tuple'>
info_list的内容: ['aaa', 'aaa', 'bbb', 'ccc']
info_list的类型: <class 'list'>
info_tuple的内容: ('aaa', 'aaa', 'bbb', 'ccc')
info_tuple: <class 'tuple'>
字典
字典的定义
dictionary(字典) 是 除列表以外 Python 之中 最灵活 的数据类型, 字典同样可以用来存储任意类型对象,通常用于存储 描述一个 物体 的相关信息
和列表的区别:
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
字典用 定义,字典使用 键值对 存储数据,键值对之间使用 , 分隔
- 键 key 是索引
- 值 value 是数据
- 键 和 值 之间使用 : 分隔
- 键 必须是唯一的
- 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
例如:
xiaoming = "name": "小明",
"age": 18,
"gender": True,
"height": 1.75
字典常用操作
- clear()
作用:删除字典中的所有项
返回值:该方法没有返回值,或者说返回None
用法:d.clear()
- get()
作用:get方法也能够根据键获得值,但比d[key]的方式取值更好用,d[key]只适用于键存在的情况(否则会抛出异常),而get方法在键不存在时返回None,不会抛出异常
返回值:返回字典的key对应的value, 没有该value则返回None
用法:value = d.get(key) 或者 value = d.get(key, defaultValue),其中defaultValue在get取不到值的时候返回
- items()
作用:返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。
返回值:items方法返回的是一个"字典视图",dict_items类型, 里面是一个包含所有字典项的列表。
用法:t = d.items()
注意: "字典视图"是特殊类型,可用于迭代,可使用len(t)。但是不能当做正常的字典来用,比如:不能t[‘name’] 或者 t[0]
- keys()
作用:返回一个包含所有字典key的列表,也属于"字典视图",类型为dict_keys。
用法:k = d.keys()
得到"字典视图"类型后可以转成list类型或者tuple类型,例如:
a = 'name': 'tom', 'age': 20
a_key = a.keys()
print('type=%s,content=%s' % (type(a_key), a_key))
a_list = 以上是关于Python基础语法的主要内容,如果未能解决你的问题,请参考以下文章