Python基础(未完待续)

Python语言特点

  • Python语言是高级通用脚本编程语言。

面向对象

  • 在很多教材中,开篇对 Python 的定义就是,“Python 可以被定义为一种面向对象的脚本编程语言”。没错,这算是 Python 语言最大的一个特点。

面向对象和面向过程的区别

  • 面向对象简单来说就是以对象展开,输入的一切都是“对象”。面向对象就好像是一部纪传体,人物(对象)可以穿梭在不同的时期(程序)。这就需要先分析需求,分解问题,再把对象分别写好,需要的时候调用即可。
  • 面向过程简单来说就是需要走程序。面向过程就好像是一部编年体,没错,在这里你可以看到详细的每一年人物(程序)是怎么生活(运行)的。这就需要在分析需求的同时列出所以需要的步骤,依次运行程序,一步一步地实现需求。

可移植性

  • :Python 可以移植到许多平台上,这样就可以实现在不同平台上的工作,这些平台包括 Linux、Windows、Windows CE、以及 Google 基于 linux 开发的 android 平台等等。

丰富的库

  • Python 本身也会提供很多标准库来辅助用户进行各类程序开发,同时也支持第三方库的安装,Python 强大的库可以满足数据分析、游戏开发、密码系统等多种需求。

支持中文

  • 如果你是初次接触编程,那么支持中文开发的 Python 语言一定能让你更快上手。

使用开源

  • Python 同时也是一个自由、开放的源码软件,开源软件的源代码任何人都可以审查、修改和增强,或者把它的一部分用于新的自由软件中。

语法简洁

  • Python 的语法简洁主要体现在它更接近自然语言,读起来简洁易懂,同时,在同样的程序中 Python 所需的代码量更少,更少的代码行数、更简洁的表达方式可减少程
    序错误以及缩短开发周期。

程序的格式框架

缩进

  • 缩进指每行语句开始前的空白区域,用来表示 Python 间的包含和层次关系。
  • 一般代码不需要缩进,顶行编写且不留空白。当表示分支、循环、函数、类等程序含义时,在 if、while、for、def、class 等关键字所在完整语句后通过英文冒号(:)结尾并在之后
  • 进行缩进,表明后续代码与紧邻无缩进语句的所属关系。 代码编写中,缩进可以用【Tab】键实现,也可以用多个空格(一般是 4 个)实现,但两者不可混用。如下图,框起来的地方就是缩进。
sum = 0
for i in range (0,10,2):
    sum += i
    print(sum)

注释

  • 注释是代码中的辅助性文字,一般用于程序员对代码的说明。Python 程序中的非注释语句将按顺序执行,注释语句将被解释器过滤掉,不被执行。
  • Python 采用(#)表示一行注释的开始,文档注释是三个单引号(‘’')或三个双引号(“”")。
# 单行注释

'''三个单引号'''

"""三个双引号"""

续行符

  • Python 程序是逐行编写的,每行代码长度无长度限制。但有的时候一句话过长,放在一行会造成阅读困难,那么我们可以使用续行符解决这个问题。
  • 续行符由反斜杠(\)符号表达。
print("死死死死死死死死死死死死死死\
思思思思思思思思思思死死死死死\
死死死死死死死死死死死\
死死死死死死死死死四\
三四三死死死死死死")

在这里插入图片描述
在这里插入图片描述

  • 续行符后不能存在空格,续行符后必须直接换行。 续行符不仅可以用于单行代码较长的情况,也适合对代码进行多行排版增加可读性的情况。

基本语句

基本输入输出

input():输入函数

  • 使用方式:<变量> = input(<提示性文字>)
a = input("请输入一个数字")
# tpye() 用来校验数据类型
print("这个数字是{},input会让输进去的数字转化为字符串类型,如{}".format(a,type(a)))

在这里插入图片描述

eval()

  • 使用方式:<变量> = eval(<字符串>)
  • 去掉字符串最外侧的引号,并按照 Python 语句方式执行去掉引号后的字符内容,通常会和 input 函数一起使用。
  • eval() 函数用来执行一个字符串表达式,并返回表达式的值。
    字符串表达式可以包含变量、函数调用、运算符和其他 Python 语法元素。
eval(expression[, globals[, locals]])

expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
eval() 函数将字符串 expression 解析为 Python 表达式,并在指定的命名空间中执行它。

返回值
eval() 函数将字符串转换为相应的对象,并返回表达式的结果。
  • eg:
x = 7
print(eval('5 * x'))
print(eval('pow(2,6)'))
print(eval('2+9'))
n = 10
result = eval('n + 888')
print(result)

print("如何一个是数字,一个是字符串,那么会打印数字长度的字符串值,如下")
print("需要注意的是,运算方法为乘法时会造成这样的结果,其他则会报错")
namespace = {'c':6,"d":'5'}
result = eval("c * d",namespace)
print("会打印6个"+ result)

print("如果都是数字,执行计算函数则不受影响")
namespace = {'c':6,"d":5}
result = eval("c + d",namespace)
print(result)

在这里插入图片描述

eval函数的其他有用小知识
  • eval 方法能使字符串本身的引号去掉,保留字符的原本属性。
a = '55555'
print(type(a))
b = eval(a)
print(type(b))
print('-----------')
str = "[{11,22},{22,33},{33,44},{44,55}]"
print(type(str))
list = eval(str)
print(type(list))

在这里插入图片描述

  • eval() 函数也可以直接用来提取用户输入的多个值。
a,b=eval(input("用户输入的两个值,用,隔开"))
print("用户输入的值分别是{}和{}".format(a,b))

在这里插入图片描述

  • eval() 函数可将看起来像列表的字符串重新转换为列表。
zifu=" ['1709020230', '1707030416', '0', '0', '0']  "
print(type(zifu))
ls =eval(zifu)
print(type(ls))

在这里插入图片描述

  • eval 函数有将字符格式的伪 python 代码转成正常的 python 代码,特别适合于读取 config 文件和获取用户输入格式的转换

在这里插入图片描述

print():输出函数

  • 语法
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

objects -- 复数,表示可以一次输出多个对象。输出多个对象时,需要用 , 分隔。
sep -- 用来间隔多个对象,默认值是一个空格。
end -- 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符串。
file -- 要写入的文件对象。
flush -- 输出是否被缓存通常决定于 file,但如果 flush 关键字参数为 True,流会被强制刷新。
  • eg
print(1)
a = 1
b = 2
print(a,b)
print('我真的','哭死了','这个python','好像不难',sep="-")


import time
# end="" 使得打印的时候不换号
print("loading",end="")
for i in range(20):
    # 这个也是同理
    print('.',end="",flush=True)
    time.sleep(0.5)

在这里插入图片描述

  • 混合输出字符串与变量值
a = "柳如烟"
b = "沈幼楚"

print("{}有什么好的,娶我{}委屈你了?".format(a,b))

在这里插入图片描述

分支语句

  • 分支语句是控制程序运行的一种语句,它的作用是根据判断条件选择程序执行路径。分支语句包括单分支、二分支和多分支。

单分支语句

a = 50
if a < 100:
    print("a小于100")

在这里插入图片描述

二分支语句

a,b = eval(input("请输入两个数字并用,隔开"))
if a > b:
    print("{}大于{}".format(a,b))
else:
    print("{}大于{}".format(b,a))

在这里插入图片描述

多分支语句

a,b = eval(input("请输入两个数字并用,隔开"))
if a > b:
    print("{}大于{}".format(a,b))
elif a < b:
    print("{}小于{}".format(a,b))
else:
    print("{}等于{}".format(a,b))

在这里插入图片描述

循环语句

  • 循环语句是控制程序的一类重要语句,它的作用是根据判断条件确定一段程序是否再次执行
    一次或者多次。循环包括:条件循环和遍历循环。

条件循环语句

  • 语法
while (<条件>): 
		<语句块 1> 
<语句块 2> 
  • 当条件为 True 时,执行语句块 1,然后再次判断条件,当条件为 False 时,退出循环,执
    行语句块 2。
  • eg
i = 1
while i:
    j = 1
    while j:
        print (i, "*", j, " = ", i * j, '  '),
        if i == j:
            break
        j += 1
        if j >= 10:
            break
    print ("\n")
    i += 1
    if i >= 10:
        break

在这里插入图片描述

遍历循环语句

  • 语法
使用方式: for <循环变量> in <遍历结构>: 
							<语句块>
  • 从遍历结构中逐一提取元素,放在循环变量中,对于每个提取的元素执行一次语句块。
s = '123456789'
for i,j in enumerate(range(0,len(s),2)):
    print (i,"=======",s[j])

list = [1,5,62,85,221,42,63,14,95,57]
list1 = list.pop()
print(list1)

在这里插入图片描述

  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
  • 语法
enumerate(sequence, [start=0])

sequence -- 一个序列、迭代器或其他支持迭代对象。
start -- 下标起始位置的值。

基本语法元素

引用

  • Python 适用于各个领域,其最大的魅力就在于它可以使用大量的外部函数库。

import 语句

  • 语法
import <库名 1> 
import <库名 2> 
... ... 
import <库名 n>

from 方式

  • 将模块中指定的属性或名称导入当前程序命名空间。
  • 语法
from <库名> import <函数名> 
  • 同时,Python 也支持为功能库起别名。
  • import <功能库名> as 别名

import和from的区别

  • 采用 import 方式,用户自定义的函数名字可以和库中函数的名字一样;
  • 采用 from 方式,用户程序中不能用函数库中的名字定义函数。

命名规则

  • 标识符是用户编程时使用的名字,用于给变量、常量、函数、语句块等命名。标识符是由一串字符串组成,这个字符串可以是任意字母、数字、下划线或汉字,但是不能以数字开头。
  • 标识符也不能与关键字重名

变量

  • 在标识符中,在运行过程中可以被修改的量被称为变量。

  • 表达式 : 产生或计算新数据值的代码片段称为表达式,一般由数据和操作符等构成。

  • 赋值语句 :对变量进行赋值的一行代码被称为赋值语句。

  • 语法格式: <变量> = <表达式>

  • Python允许你同时为多个变量赋值。例如:

a = b = c = 1
# a,b,c 都为1
a, b, c = 1, 2, "john"
# a=1,b=2,c=john

常量

  • 一旦赋值就不能改变值的标识符,Python 中无法定义常量。

基本数据类型

  • Numbers(数字)
    String(字符串)
    List(列表)
    Tuple(元组)
    Dictionary(字典)

数字类型

  • 表示数字或数值的数据类型称为数字类型。
  • Python 提供 3 种数字类型:整数、浮点数和复数。

整数类型

  • 整数类型概念与数学中整数的概念一致,理论上的取值范围是[-∞,+∞]。实际上 Python 支持任意大的数字,只受计算机内存大小限制。
  • 整数类型有 4 种进制表示:十进制、二进制、八进制和十六进制
# 数字之间的进制转换

x = 100
print(bin(x))   # 将 x 转换为二进制整数
print(oct(x))   # 将 x 转换为八进制整数
print(int(x))   # 将 x 转换为十进制整数
print(hex(x))   # 将 x 转换为十六进制整数

# 不同数据类型之间可以相互转化
print(type(int(x)))   # 将 x 转换为整数类型
print(type(float(x))) # 将 x 转换为浮点数类型
print(type(str(x)))   # 将 x 转换为字符串类型

在这里插入图片描述

浮点数类型

  • 浮点数类型与数学中实数的概念一致,表示带有小数的数值。Python 语言中要求浮点数类型必须带有小数部分,小数部分可以是 0。有两种表示方法:一般表示法和科学计数法。
pow(x,n)=x的n次方
# 一般表示法
print( pow(1010,25) )
# 科学计数法
print(pow(1010.0,25))

在这里插入图片描述

  • 存在不确定尾数问题
  • 受限于计算机表示浮点数使用的存储宽度,计算的二进制数并不是 0.1 和 0.2 而是计算机内 部最接近 0.1 和 0.2 的二进制数。求得的数反映到十进制表示上,就会产生一个不确定尾数,至于尾数是多少,计算机内部会根据二进制运算确定产生。
print(0.1+0.2)
# 浮点数大都是一个近似的值,为解决不确定尾数问题,我们可以使用 round()函数保留几位小数
# round(x,n):对数值 x 保留 n 位
print(round(0.1+0.2,1))

在这里插入图片描述

复数类型

  • 语法
class complex([real[, imag]])

real -- int, long, float或字符串;
imag -- int, long, float;

返回值
返回一个复数

print(complex(5,1))

在这里插入图片描述

  • 需要注意的是 (5+1j) 加号中间不能留空格,不然会报错

数字类型的运算

数值运算操作符
x + y
x - y
x * y
x / y
x // y
x % y
x ** y
-x
+x
  • 基本规则
    • 整数之间运算,产生结果类型与操作符相关;
      整数和浮点数混合运算,输出结果浮点数;
      整数或浮点数与复数运算,输出结果是复数。
数值运算符
abs(x)
divmod(x,y)
pow(x,y)或pow(x,y,z)
round(x)或round(x,d)
max(x1,x2,…,xn)
min(x1,x2,…,xn)
其他操作符
  • 逻辑操作符
and
or
not
  • 比较操作符
<
<=
>=
>
==
!=
  • 真值表
对象/常量
“”
“python”
0
>=1
<=1
[]空列表
()空元组
{}空字典
None
  • 位运算操作符
操作符操作含义
&按位与
|按位或
~按位取反
^按位异或
<<左移
>>带符号右移
  • 按位与(&):都是 1,才取 1,否则为 0。
  • 按位或(|):存在 1,就取 1,均不为 1,即为 0。
  • 按位取反(~):每个位上都取相反值,1 变成 0,0 变成 1。
  • 按位异或(^):存在两个二进制数,当相应位上的数字不相同时,才取 1,若相同,即为 0。
  • 左移(<<n):将一个数各二进制位全部向左移动若干位。(就相当于在右边加 n 个 0)
  • 右移(>>n):将一个数各二进制位全部向右移动若干位。(就相当于在左边加 n 个 0)
十进制如何转二进制
  • 将一个十进制正整数转换为二进制数的时候,只需要通过除 2 取余的方法即可;将一个十进制负整数转换为二进制数需要以补码的形式表示,其转换方式,简单的一句话就是:先按正数转换,然后取反加 1。

字符串类型

  • 计算机程序经常用于处理文本信息,文本信息在程序中使用字符串类型表示。字符串是字符的序列,用一对双引号(“”)或者一对单引号(‘’)括起来。
  • 字符串属于不可变有序序列,包括两种序列体系:正向递增和反向递减。

判断是否为字符串及编解码

  • 判断一个变量是否为字符串,可以使用内置函数 type()或 isinstance()。 内置函数中有type和inistance方法,故不做演示。
  • Python 除了支持 Unicode 编码的字符串类型(str)还支持字节串类型(bytes)。 字符串类型可以通过 encode()方法使之编码成为字节串类型,而字节串类型则可以通过
    decode()方法使之解码成为字符串类型。
x = "写一个编解码来做测试"
x = x.encode()
print(x)  # 这个是编码
x = x.decode()
print(x)  # 这个是解码

在这里插入图片描述

转义字符

转义字符
\b
\f
\n
\r
\t
\v
\\
\’
\"
\ooo
\xhh
\uhhhh

内置函数

range()

  • 语法
range(start, stop[, step])

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

校验数据类型

type()

  • type() 函数如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象。
  • 语法:
type(object)
type(name, bases, dict)

name -- 类的名称。
bases -- 基类的元组。
dict -- 字典,类内定义的命名空间变量。
  • eg:
# 一个参数实例
print(type(1))
print(type('runoob'))
print(type([2]))
print(type({0:'zero'}))
x = 1
print(type( x ) == int)    # 判断类型是否相等

在这里插入图片描述

isinstance()

  • isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
  • 语法
isinstance(object, classinfo)

object -- 实例对象。
classinfo -- 可以是直接或间接类名、基本类型或者由它们组成的元组。

返回值
如果对象的类型与参数二的类型(classinfo)相同则返回 True,否则返回 False。
  • eg:
a = 2
print(isinstance (a,int))
print(isinstance (a,str))
print(isinstance (a,(str,int,list)))    # 是元组中的一个返回 True

在这里插入图片描述

type()和isinstance()的区别

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
    isinstance() 会认为子类是一种父类类型,考虑继承关系。
    如果要判断两个类型是否相同推荐使用 isinstance()。
  • 返回值
    type() 返回对象的类型对象,例如 <class ‘int’>。
    isinstance() 返回布尔值,表示对象是否是指定类型或类型元组中任意类型的实例。
  • 使用场景
    type() 主要用于获取对象的类型,以及在动态创建类时使用。
    isinstance() 主要用于判断对象是否是指定类型,特别适用于检查对象是否属于某一类或其子类。
  • 继承关系
    type() 不考虑继承关系,仅比较确切的类型。
    isinstance() 考虑继承关系,如果对象是指定类型或其子类的实例,返回 True。
  • 25
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值