Python基础-1.基础规范和语法
一、Python编写规则
编码和标识符
1.编码
默认情况下,Python3源码文件以UTF-8编码,所有字符串都是unicode字符串。
当你想用不同编码可以在文件开头这样表示:
# -*- coding: cp-1252 -*-
2.标识符
- 第一个字符必须以字母(a-z, A-Z)或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感,count 和 Count 是不同的标识符。
- 标识符对长度无硬性限制,但建议保持简洁(一般不超过 20 个字符)。
- 禁止使用保留关键字,如 if、for、class 等不能作为标识符。
【示例】合法的标识符
age = 18
name = "Jack"
_total = 88
MAX_VALUE = 1024
calculate_area()
StudentInfo
__private_var
π # Python 3 支持 Unicode 字符作为标识符
变量 # 也合法(中文也可以)
【示例】不合法的标识符
1name # 不能以数字开头
user-name # 不能包含连字符 "-"
def # 关键字也不行
my var # 不能包含空格
@home # 不能以特殊字符开头
基本规则
1.注释
# 单行注释
'''
第一种多行注释
'''
"""
第二种多行注释
"""
2.首行缩进
python最具特色的就是使用缩进来表示代码块,不需要使用大括号{} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
if True:
print("True")
else:
print("False")
注意:语句缩进数的空格数不一致,会导致运行错误!!!
3.多行语句
在一条语句太长需要多行来表达的时候可以用\符号来换行。
【示例】
one = 1
two = 2
three = 3
total = one + \
two + \
three
4.同行多条语句
Python可以在同一行中使用多条语句,语句之间使用分号;来分割。
【示例】
a = 'hello';print(a)
二、Python基本语法
print输出
print函数默认输出是换行输出,如果需要不换行输出需要在变量末尾系上end=""。
【示例】
# 换行输出
print('----换行输出----')
print('abc')
print('def')
# 不换行输出
print('---不换行输出---')
print('ghi', end=" ")
print('jkl', end=" ")
'''运行结果如下
----换行输出----
abc
def
---不换行输出---
ghi jkl
'''
input输入内容
可以通过input方法获取你输入的字符串的值。
【示例】
# 通过定义字符串变量赋值输入的内容,再用print输出输入的内容
input_string = str(input("请输入内容:"))
print('input输入的内容:', input_string)
python第一个程序
python的输出使用print方法就行。
print("第一个Python程序: Hello, Python!")
import导入
Python使用用import或者from...import来导入相应的模块。
【示例】Python中的各种导入
# 导入整个模块
import somemodule
# 从某个模块导入某个函数
from somemodule import somefunction
# 从某个模块导入多个函数
from somemodule import firstfunc, secondfunc, thirdfunc
# 从某个模块导入全部函数
from somemodule import *
三、Python基本数据类型
Python3中常见的数据类型有:
- Number(数字)
- String(字符串)
- bool(布尔类型)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
其中不可变数据有三个:Number(数字)、String(字符串)、Tuple(元组);
可变数据类型也有三个:List(列表)、Dictionary(字典)、Set(集合)。
变量赋值
在Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
温馨提示:Python中的变量没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
通过=符号来进行赋值,=符号左边是变量名,右边是变量的值,如下所示:
number = 88 # 整型变量
miles = 67.45 # 浮点型变量
name = "Python" # 字符串
可以同时用简洁的语法进行多个变量的赋值,如下所示:
# 多个变量相同值的赋值
c = d = e = 1
# 多变量也可以赋值不同类型
f, g, h = 1, 2, "abcd"
print('c:', c, ',d:', d, ',e:', e, ',f:', f, ',g:', g, ',h:', h)
1.数字(Number)类型
python中数字有四种类型:整数、布尔型、浮点数和复数。
int (整数), 如:1, 只有一种整数类型int,表示为长整型,没有python2中的Long。
bool (布尔), 如:True。
float (浮点数), 如:1.23、3E-2
complex (复数), 如:1 + 2j、 1.1 + 2.2j
a = 1
b = 3.1417
print('数字(Number)类型\n整数:', a, '浮点型:', b)
2.字符串(String)类型
Python中字符串的使用准则:
用单引号''或双引号""表示,使用三引号'''或"""可以指定多行字符串。
对于特殊字符可以使用\来进行转义,使用r可以让字符串不发生转义比如:r"this is a line \n"这里的\n将不是换行,而是普通的字符串。
【示例】字符串的赋值
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""
print('字符串(String)' + '\n字符串:', word, '\n句子:', sentence, '\n段落:\n', paragraph)
【示例】字符串的操作
string = 's5fdi2der22ji455koy69jiff'
# 输出字符串
print('输出字符串:', string)
# 输出第一个到倒数第二个的所有字符
print('输出第一个到倒数第二个的所有字符:', string[0:-1])
# 输出字符串第一个字符
print('输出字符串第一个字符:', string[0])
# 输出从第三个开始到第六个的字符(不包含)
print('输出从第三个开始到第六个的字符(不包含):', string[2:5])
# 输出从第三个开始后的所有字符
print('输出从第三个开始后的所有字符:', string[2:])
# 输出从第二个开始到第五个且每隔一个的字符(步长为2)
print('输出从第二个开始到第五个且每隔一个的字符(步长为2):', string[1:5:2])
# 输出字符串两次
print('输出字符串两次:', string * 2)
# 连接字符串
print('连接字符串:', string + '你好')
# 使用反斜杠(\)+n转义特殊字符
print('使用反斜杠(\\)+n转义特殊字符: ' + 'hello\npython')
# r,表示原始字符串,不会发生转义
print('使用r不转义字符串: ' + r'hello\npython')
3.布尔(bool)类型
在Python中True和False都是关键字,表示布尔值。
bool是int的子类,布尔值可以被当成整数看待,布尔值中的True相当于整数中的1,而False则相当于整数中的0。
布尔类型的应用:
- 布尔值可以和比较运算符相结合使用,比如:数字和字符串比较,满足条件返回
True。 - 布尔值也可以和逻辑运算符以及条件判断,比如:
and、or、not,又比如:if,这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。 - 布尔值还可以和成员运算符结合使用,比如:
in或not in,是否满足条件返回布尔值。 - 可以使用
bool()函数将其他类型的值转换为布尔值。None、False、零 (如:0、0.0、0j)、空序列(如:''、()、[])和空映射(如:{})的布尔值为False。其他所有值转换为布尔值时均为True。
【示例】
# 布尔类型的值和类型
a = True
b = False
print(type(a)) # <class 'bool'>
print(type(b)) # <class 'bool'>
# 布尔类型的整数表现
print(int(True)) # 1
print(int(False)) # 0
# 使用 bool() 函数进行转换
print(bool(0)) # False
print(bool(42)) # True
print(bool('')) # False
print(bool('Python')) # True
print(bool([])) # False
print(bool([1, 2, 3])) # True
# 布尔比较运算
print(21 > 18) # True
print(10 == 10) # True
print(56 < 20) # False
# 布尔逻辑运算
print(True and False) # False
print(True or False) # True
print(not True) # False
4.数据类型转换
我们可以通过type关键字获取数据的类型,如下所示:
a, b, c = 28, 'python', 3.14
print('a的类型为:', type(a))
print('b的类型为:', type(b))
print('c的类型为:', type(c))
'''运行结果如下
a的类型为: <class 'int'>
b的类型为: <class 'str'>
c的类型为: <class 'float'>
'''
不同类型的变量可以相互转换,在后期应用中可能会需要类型的转换,如下所示:
# 赋值三个不同类型的变量
a, b, c = 1, 2.8, '3'
# 转换成整数型
x, y, z = int(a), int(b), int(c)
print('转换成整数型后的值:', x, y, z) # x,y,z分别为1,2,3
# 转换成浮点型
x, y, z = float(a), float(b), float(c)
print('转换成浮点型后的值:', x, y, z) # x,y,z分别为1.0, 2.8, 3.0
# 转换成字符串型
x, y, z = str(a), str(b), str(c)
print('转换成字符串型:', x, y, z) # x,y,z分别为1, 2.8, 3
三、Python运算符
1.算术运算符
| 符号 | 符号名称 | 符号作用 |
|---|---|---|
| + | 加 | 两个对象相加 |
| - | 减 | 得到负数或是一个数减去另一个数 |
| * | 乘 | 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 210 |
| / | 除 | 两个对象相除 |
| % | 取模 | 返回除法的余数 |
| ** | 幂 | 返回x的y次幂 |
| // | 取整除 | 取整除 |
【示例】
# 定义两个变量
a, b = 21, 10
c = a + b # 结果c = 31
d = a - b # 结果d = 11
e = a * b # 结果e = 210
f = a / b # 结果f = 2.1
g = a % b # 结果g = 1
h = a ** b # 结果h = 21的10次方
i = a // b # 结果i = 2
print('a + b:', c, '\na - b:', d, '\na * b:', e, '\na / b:', f, '\na % b:', g, '\na ** b:', h, '\na // b:', i)
2.比较运算符
| 符号 | 符号名称 | 符号作用 |
|---|---|---|
| == | 等于 | 比较对象是否相等 |
| != | 不等于 | 比较两个对象是否不相等 |
| > | 大于 | 返回x是否大于y |
| < | 小于 | 返回x是否小于y。 |
| >= | 大于等于 | 返回x是否大于等于y。 |
| <= | 小于等于 | 返回x是否小于等于y。 |
温馨提示:所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
【示例】
print('a == b:', a == b) # 结果为 False
print('a != b:', a != b) # 结果为 True
print('a > b:', a > b) # 结果为 True
print('a < b:', a < b) # 结果为 False
print('a >= b:', a >= b) # 结果为 True
print('a <= b:', a <= b) # 结果为 False
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 |
| := | 海象运算符 | 可在表达式内部为变量赋值。 |
4.位运算符
| 符号 | 符号名称 | 符号作用 |
|---|---|---|
| & | 按位与运算符 | 参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 (a & b) 输出结果 12 ,二进制解释: 0000 1100 |
| | | 按位或运算符 | 只要对应的二个二进位有一个为1时,结果位就为1。 (a | b) 输出结果 61 ,二进制解释: 0011 1101 |
| ^ | 按位异或运算符 | 当两对应的二进位相异时,结果为1 (a ^ b) 输出结果 49 ,二进制解释: 0011 0001 |
| ~ | 按位取反运算符 | 对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1 (~a ) 输出结果 -61 ,二进制解释: 1100 0011, 在一个有符号二进制数的补码形式。 |
| << | 左移动运算符 | 运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。 a << 2 输出结果 240 ,二进制解释: 1111 0000 |
| >> | 右移动运算符 | 把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数 a >> 2 输出结果 15 ,二进制解释: 0000 1111 |
【示例】
# 定义两个变量
x = 60 # 二进制值: 0011 1100
y = 13 # 二进制值: 0000 1101
print('x & y:', x & y) # 结果为 12 二进制:0000 1100
print('x | y;', x | y) # 结果为 61 二进制:0011 1101
print('x ^ y:', x ^ y) # 结果为 49 二进制:0011 0001
print('~ x:', ~ x) # 结果为 -61 二进制:1100 0011
print('x << 2:', x << 2) # 结果为 240 二进制:1111 0000
print('x >> 2:', x >> 2) # 结果为 15 二进制:0000 1111
5.逻辑运算符
| 符号 | 符号名称 | 符号作用 |
|---|---|---|
| and | 布尔"与" | x and y,如果 x 和 y 都满足条件 |
| or | 布尔"或" | x or y,如果 x 或 y 满足一个条件 |
| not | 布尔"非" | x not y,如果 x 不满足条件 y |
【示例】
# and '与'
if x == 60 and y == 13:
print('a和b的值都是正确的')
else:
print('a和b的值有一个不正确,或者两个都有不正确')
# or '或'
if x == 16 or y == 13:
print('a和b的值有一个是正确的,或者都是正确的')
else:
print('a和b的值都不正确')
# not '非'
if not x == 16:
print('x的值不对')
else:
print('x的值是正确的')
6.成员运算符
| 符号 | 符号名称 | 符号作用 |
|---|---|---|
| in | 属于 | 如果在指定的序列中找到值返回 True,否则返回 False。 |
| not in | 不属于 | 如果在指定的序列中没有找到值返回 True,否则返回 False。 |
【示例】
list_a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a, b = 6, 16
if a in list_a:
print('a在list_a列表中')
else:
print('a不在list_a列表中')
if b not in list_a:
print('b不在list_a列表中')
else:
print('b在list_a列表中')