Python基础知识

目录

基础语法

标识符

变量

模块

数字类型

整数类型

浮点类型

复数类型

布尔类型

数字类型的相互转换

隐式类型的转换

显示类型的转换

运算符

算术运算符

比较运算符

逻辑运算符

位运算符

位反运算的计算

赋值运算符

运算符的优先级

程序流程控制

分支语句

(1)if结构

(2)if-else结构

(3)if-elif-else结构

循环语句

(1)while语句

(2)for语句

跳转语句

break语句

continue语句


基础语法

标识符

Python中标识符的命名规则如下:

1.区分大小写:Myname与myname是两个不同的标识符。

2.首字符可以是下画线(_)或字母,但不能是数字。

3.除首字符外的其他字符必须是下画线、字母和数字。

4.关键字不能作为标识符。

5.不要使用Python的内置函数作为自己的标识符。(注:中文等亚洲文字也可以作为Python标识符)

变量

在Python中为一个变量赋值的同时就声明了该变量,该变量的数据类型就是赋值数据所属的类型,该变量还可以接收其他类型的数据。

python 复制代码
# 声明变量,变量的数据类型根据赋值数据所属的类型推导出来
greeting="HelloWorld"(Python语句结尾一般不加分号)
student_score=0.0
//虽然y已经保存了整数20,但它也可以接收其他类型的数据
y=20
y=True

Python注释时使用#,#位于注释行的开头,#后面有一个空格, 接着是注释的内容。

模块

在Python中一个模块就是一个文件,模块是保存代码的最小单位, 在模块中可以声明变量、函数、属性和类等Python代码元素。

一个模块的元素访问另外一个模块的代码元素的三种方式

(1)如果想要导入另一个模块所有的内容,直接使用import语句

cpp 复制代码
# m1模块
import m2
y=20
print(m2.x)
# m2模块
x=20.0

import<模块名>:通过这种方式会导入m2模块的所有代码元素,在访问时需要加前缀"m2."

(2)如果想要导入另一个模块的某一个元素,直接使用from import语句

python 复制代码
# m1模块
from m2 import x
y=20
print(x)
# m2模块
x=20.0

from <模块名>import<代码元素>:通过这种方式会导入m2中的x变量,在访问时不需要加前缀"m2."

(3)如果想要导入另一个模块的某一个元素,但是名称有冲突,使用from import as语句

python 复制代码
# m1模块
from m2 import x as x2
x=100
y=20
print(x2)
# m2模块
x=20.0

from <模块名>import <代码元素>as<代码元素别名>:与(2)类似,在当前m1模块的代码元素(x变量)与要导入的m2模块的代码元素(x变量)名称有冲突时,可以给要导入的代码元素(m2中的x)一个别名x2。

数字类型

Python中的数字类型有4种:整数类型、浮点类型、复数类型和布尔类型。需要注意的是,布尔类型也是数字类型,它事实上是整数类型的一种。

整数类型

Python中的整数类型为int类,整数类型的范围可以很大,表示很大的整数,只受所在计算机硬件的限制。

python 复制代码
>>>28 # 十进制表示方式
28
>>>type(28)
<class 'int'>
>>>0b11100 # 二进制表示方式,以阿拉伯数字0和英文字母B(或b)作为前缀
28
>>>0o34 # 八进制表示方式,以阿拉伯数字0和英文字母O(或o)作为前缀
28
>>>0x1c # 十六进制表示方式,以阿拉伯数字0和英文字母X(或x)作为前缀
28

浮点类型

浮点类型主要用来存储小数数值,Python的浮点类型为float类。Python只支持双精度浮点类型,而且是与本机相关的。

python 复制代码
>>>1.0 # 采用小数表示浮点类型
1.0
>>>0.0
0.0
>>>type(0.0)
<class 'float'>
>>>3.36e2 # 使用科学计数法表示浮点数据,在科学计数法中会使用E(或e)表示10的指数,如e2表示10^2
336.0
>>>1.56e-2
0.0156
>>>.56e-2
0.0056

复数类型

整数和浮点数(小数)在数学中被统称为实数。与实数对应的是复数,复数在数学中被表示为:a+bi,其中a被称为实部,b被称为虚部,i 被称为虚数单位。

python 复制代码
>>>1+2j # 1+2j表示实部为1,虚部为2的复数
(1+2j)
>>>(1+2j)+(1+2j) # 两个复数相加
(2+4j)
>>>c = 3 + 4j
>>>type(c)
<class 'complex'>

布尔类型

Python中的布尔类型bool,是整数类型int的子类,它只有两个值:True和False。任何类型的数据都可以通过bool()函数转换为布尔值,那些被认为"没有的""空的"值会被转换为False,反之转换为True。

python 复制代码
>>>bool(0) # 整数0被转换为False
False
>>>bool(2) # 其他非零整数被转换为True
True
>>>bool('') # 空字符串被转换为False
False
>>>bool(' ') # 其他非空字符串被转换为True
True
>>>bool([]) # [](空列表)被转换为False
False
>>>bool({}) # {}(空字典)被转换为False
False

数字类型的相互转换

在Python的数字类型中,除复数外,其他三种数字类型如整数、浮点和布尔都可以相互转换,分为隐式类型的转换和显式类型的转换。

隐式类型的转换

数字之间可以进行数学计算,在进行数学计算时若数字类型不同, 则会发生隐式类型的转换。

python 复制代码
>>>a = 1 + True
>>>a # 布尔类型True被转换为整数类型
2
>>>a = 1.0 + 1
>>>a # 整数1被转换为浮点数
2.0 
>>>a = 1.0 + 1 +True # 布尔类型和整数类型均被转换为浮点类型
>>>a
3.0

显示类型的转换

当我们遇到想要将浮点数转换为整数这样的情况时,就需要用到显示类型的转换。除复数外,三种数字类型如整数、浮点和布尔都有自己的转换函数,分别是int()、float()和bool()函数。

python 复制代码
>>>a = (1.0) + 1
>>>a
2.0
>>>int(False)
0
>>>int(True)
1
>>>int(0.6)
0
>>>float(5)
5.0
>>>float(False)
0.0
>>>float(True)
1.0

运算符

算术运算符

算术运算符用于组织整数类型和浮点类型的数据,有一元运算符和二元运算符之分。 一元算术运算符有两个:+(正号)和-(负号),例如:+a还是a ,-a是对a的取反运算。

二元算术运算符如下表所示。

python 复制代码
>>>a = 1
>>>a
1
>>>-a
-1
>>>1+1
2
>>>2-1
1
>>>2*3
6
>>>3/2
1.5
>>>3%2
1
>>>3//2
1
>>>-3//2
-2
>>>10*2
20
>>>10.2+10
20.2
>>>1.0+True+1
3.0

比较运算符

比较运算符用于比较两个表达式的大小,其结果是布尔类型的数据 ,即True或False。比较运算符可用于任意类型的数据,但参与比较的两种类型的数据要相互兼容,即可以进行隐式转换,例如:整数、浮点和布尔这三种类型是相互兼容的。

python 复制代码
>>>a = 1
>>>b = 2
>>>a>b
False
>>>1.0==1 # 浮点数和整数都可以进行比较
True
>>>1.0!=1
False
>>>a='hello'
>>>b='hello'
>>>a==b
True
>>>a='World'
>>>a>b # 比较字符串的大小,即注意比较字符Unicode编码的大小,如果两个字符串的第1个字符不能比较出大小,那么比较第二个字符串,直到比较有了结果才结束比较
True

逻辑运算符

逻辑运算符用于对布尔型变量进行运算,其结果也是布尔型。

python 复制代码
>>>a=1
>>>b=0
>>>def f1(): # 定义一个函数f1(),函数的内容在后面介绍
   print('--进入函数f1--')
   return True
>>>(a>b) or f1() # 表达式(a>b)为True,结果确定为True,f1()不会被调用
True 
>>>(a<b) or f1() # 表达式(a<b)为False,结果不确定,f1()函数会被调用
--进入函数f1--
>>>(a<b) and f1() # 表达式(a<b)为False,结果确定为False,f1()函数不会被调用
False
>>>(a>b) and f1() # 表达式(a>b)为True,结果不确定,f1()函数会被调用
--进入函数f1--
True

位运算符

位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整数类型的数据。

python 复制代码
>>>a = 0b10110010 # 十进制数178
>>>b = 0b01011110 # 十进制数94
>>>a | b # a和b按位进行或运算,只要有一位为1,这一位就为1,否则为0
254
>>>a & b # a与b按位继续宁与运算,只有两位全部为1,这一位才为1,否则为0
18
>>>a ^ b # a与b进行异或运算,只有两位相反时这一位才为1,否则为0
236
>>>~a
-179
>>>a>>2 # 二进制数右移两位
44
>>>c=-20
>>>~c
19 # 位反运算的计算,记住公式~x=-(x+1)

位反运算的计算

首先要明白二进制在计算机的内存中是以补码的形式存储的。正数的补码=原码=反码,负数的反码=原码的取反(二进制的符号位除外,一般来说在二进制的左边的最高位)负数的补码=反码+1

注意:若已知补码为11111000,如何求其原码呢?

**方法1:**注意:符号位不变!

先减1,得到11110111,取反(符号位保持不变,其他位置按位取反),得到10001000

**方法2:**注意:保持符号位不变!

将这个二进制数除了符号位,其余位置取反,得10000111,接着加1,得到10001000

**总结:**减1后再取反和取反后再加1效果是一样的。

按位取反(二进制的每一位都取反包括符号位和数据位)的计算方法有两种:

**方法1:**公式法:~x=-(x+1)

比如:~11=-(11+1)=-12

**方法2:**以~11为例:

(1)计算11的补码

转二进制:01011

计算补码:01011(正数的补码=原码)

(2)按位取反(按位取反是在这里进行的,即补码的形式进行按位取反)得到10100

(3)将其转为原码

取其反码(因为补码为负数):11011,末位加1,得11100

(4)符号位为1是负数,即-12

以~(-11)为例:

(1)计算-11的补码

转二进制:11011

计算补码:10101(负数的补码=原码取反+1)

(2)按位取反(按位取反是在这里进行的,即补码的形式进行按位取反)得到01010

(3)将其转为原码

因为补码为正数,原码就是补码:01010

(4)符号位为0是正数,即10

赋值运算符

运算符的优先级

程序代码中的运算符与数学中的运算符都是有优先级的,并且基本一致,但是有的运算符在数学中并不存在。具体优先级看下面的表格,表格中从上到下优先级依次降低,同一行有相同的优先级。优先级从高到低大体是:算术运算符>位运算符>关系运算符>逻辑运算符>赋值运算符。

python 复制代码
>>>1-2*2
-3
>>>a=0b10110010
>>>b=0b01011110
>>>c=0b11
>>>a | b & c # &优先级高于|,先计算b&c,其结果为2,然后计算a|2,最后结果为178
178

程序流程控制

分支语句

Python中没有switch语句,设计理念简单、刚好够用。

(1)if结构

python 复制代码
score=int(input("请输入一个0~100的整数:"))
if score>=85:
    print("您真优秀!")
if score<60:
    print("您需要加倍努力!")
if (score>=60) and (score<85):
    print("您的成绩还可以,仍需继续努力!")

(2)if-else结构

python 复制代码
score=int(input("请输入一个0~100的整数:"))
if score>=60:
    if score>=85:
        print("您真优秀!")
    else:
        print("您的成绩还可以,仍需继续努力!")
else:
    print("您需要加倍努力!")

(3)if-elif-else结构

python 复制代码
score=int(input("请输入一个0~100的整数:"))
if score>=90:
    grade='A'
elif score>=80:
    grade='B'
elif score>=70:
    grade='C'
elif score>=60:
    grade='D'
else:
    grade='D'
print("Grade="+grade)

循环语句

Python支持两种循环语句:while和for。

(1)while语句

先判断循环条件,若条件为True则执行循环。

python 复制代码
i=0
while i*i<1000:
    i+=1
print("i="+str(i))
print("i*i="+str(i*i))

Python中while语句还可以带有else子语句,else子语句是在循环体正常结束时才执行的语句,当循环体被中断时不执行,当遇到break、return和有异常发生时都会中断循环。

输入

python 复制代码
i=0
while i*i<10:
    i+=1
    print(str(i)+'*'+str(i)+' =',i*i)# str()函数可以将其他数据类型转换为字符串
else:
    print('While Over!')

输出

python 复制代码
1*1 = 1
2*2 = 4
3*3 = 9
4*4 = 16
While Over!

如果将上述代码修改成下面的

python 复制代码
i=0
while i*i<10:
    i+=1
    if i==3:
        break
    print(str(i)+'*'+str(i)+' =',i*i)# str()函数可以将其他数据类型转换为字符串
else:
    print('While Over!')

输出

python 复制代码
1*1 = 1
2*2 = 4# while循环被中断,不会执行else语句

(2)for语句

Python中只有一种for语句,即for-in语句,它可以遍历任意可迭代对象中的元素。(可迭代对象包括字符串、列表、元组、集合和字典等)

for语句的一般结构为:

python 复制代码
for 变量 in 可迭代对象:
     循环体语句组
else:
    语句组
python 复制代码
for item in 'Hello': # 迭代字符串
    print(item)
numbers=[43,32,55,74] # 迭代整数列表
for item in numbers:
    print(item)

for语句中的else子语句和while中的else子语句作用是一样的,在循环体正常结束时才执行else语句,当循环体被中断时不执行,当遇到break、return和有异常发生时都会中断循环。

输入

python 复制代码
for item in range(10):
    print(item)
else:
    print('For Over!')

输出

python 复制代码
0
1
2
3
4
5
6
7
8
9
For Over!

如果将上述代码修改成下面的

python 复制代码
for item in range(10):
    if item==3:
        break
    print(item)
else:
    print('For Over!')

输出

python 复制代码
0
1
2

跳转语句

跳转语句能够改变程序的执行顺序,包括break、continue和return。 break和continue用于循环体中,而return用于函数中。这里先介绍break和continue语句,对于return语句,将在后面的内容中介绍。

break语句

break语句用于强行退出循环体,不再执行循环体中剩余的语句。

python 复制代码
for item in range(10):
    if item==3:
        break # 跳出循环
    print(item)
else:
    print('For Over!')

输出

python 复制代码
0
1
2

continue语句

continue语句用于结束本次循环,跳过循环体中尚未执行的语句, 接着进行终止条件的判断,以决定是否继续循环。

python 复制代码
for item in range(10):
    if item==3:
        continue # 当item==3时执行continue语句,终止本次循环,循环体中continue之后的语句不再执行,接着进行下次循环
    print(item)
else:
    print('For Over!')

输出

python 复制代码
0
1
2
4
5
6
7
8
9
For Over!
相关推荐
算法小白(真小白)2 小时前
低代码软件搭建自学第二天——构建拖拽功能
python·低代码·pyqt
唐小旭2 小时前
服务器建立-错误:pyenv环境建立后python版本不对
运维·服务器·python
007php0072 小时前
Go语言zero项目部署后启动失败问题分析与解决
java·服务器·网络·python·golang·php·ai编程
Chinese Red Guest2 小时前
python
开发语言·python·pygame
骑个小蜗牛3 小时前
Python 标准库:string——字符串操作
python
黄公子学安全5 小时前
Java的基础概念(一)
java·开发语言·python
程序员一诺5 小时前
【Python使用】嘿马python高级进阶全体系教程第10篇:静态Web服务器-返回固定页面数据,1. 开发自己的静态Web服务器【附代码文档】
后端·python
小木_.6 小时前
【Python 图片下载器】一款专门为爬虫制作的图片下载器,多线程下载,速度快,支持续传/图片缩放/图片压缩/图片转换
爬虫·python·学习·分享·批量下载·图片下载器
Jiude6 小时前
算法题题解记录——双变量问题的 “枚举右,维护左”
python·算法·面试