Python基础-1.基础规范和语法

TOC

一、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.233E-2
complex (复数), 如:1 + 2j1.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中TrueFalse都是关键字,表示布尔值。
boolint的子类,布尔值可以被当成整数看待,布尔值中的True相当于整数中的1,而False则相当于整数中的0

布尔类型的应用:

  • 布尔值可以和比较运算符相结合使用,比如:数字和字符串比较,满足条件返回True
  • 布尔值也可以和逻辑运算符以及条件判断,比如:andornot,又比如:if,这些运算符可以用来组合多个布尔表达式,生成一个新的布尔值。
  • 布尔值还可以和成员运算符结合使用,比如:innot in,是否满足条件返回布尔值。
  • 可以使用 bool() 函数将其他类型的值转换为布尔值。NoneFalse、零 (如:00.00j)、空序列(如:''()[])和空映射(如:{})的布尔值为 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列表中')