【Python】Python语言基础,简单易懂!

2.1 python程序概述

2.1.1 引例

[例 2.1] 已知三角形的 3 条边,求三角形的面积(area. py)。提示:假设3条边的边长分别为a,b和c,则三角形的面积s= h* (h-a)(h-b) (h-c),其中h为三角形周长的一半。

importmath# 导入math库,一般是一些数学类的函数
a=3# int(input())为输入一个整数型的数字
b=4
c=5
h= (a+b+c) /2#三角形周长的一半
s=math.sqrt(h* (h-a) * (h-b) * (h-c)) # 海伦公式计算三角形的面积
print(s) # 输出s的值

6.0

2.1.2 Python程序的构成

 Python 程序可以分解为模块、语句、表达式和对象。从概念上理解,其对应关系如下:

  • (1)Python程序由模块组成,模块对应扩展名为py的源文件。一个Python程序由一个或多个模块构成。例2.1程序由模块area.py和内置模块math 组成。

  • (2)模块由语句组成。模块即 Python 源文件。在运行 Python序时按顺序依次执行模块中的语句。在例2.1程序中import math为导人模块语;print(s)为调用函数表达式语句;其余的为赋值语句。

  • (3)语句是 Python 程序的过程构造块,用于创建对象变量赋值、调用函数、控制分支、创建循环、增加注释等。语句包含表达式。在例2.1程序中语import math 用来导人 math模块,并依次执行其中的语句;在语句“a=3.0”中,字面量3.0创建一个值为 3.0的flat型对象,并绑定到变量a;在语“h =(a+b十c)/2”中,算术表达式(a +b+c)/2的运算结果为一个新的 float 型对象,并绑定到变量 h;“#”引导注释语句;在语句 print(s)中,调用内置函数 print(),输出对象s的值。

  • (4)表达式用于创建和处理对象。在例 2.1程序的语“s = mathsqrt(h * (h-a)(h-b)(h-c))”中,表达式h(h-a)(h-b)*(h-c)的运算结果为一个新的float型对象,math.sqrt 调用模块 math 中的 sqrt()函数,计算参数对象的平方根。

2.2 Python对象和引用

2.2.1 Python对象概述

 计算机程序通常用于处理各种类型的数据(即对象),不同的数据属于不同的数据类型,支持不同的运算操作。在 Python 语言中,数据表示为对象。对象本质上是一个内存块,拥有特定的值,支持特定类型的运算操作。在Python 3中,一切皆为对象。Python语言中的每个对象由标识(identity)类型(type)值(value)标识。

  • (1)标识用于唯一地标识一个对象,通常对应对象在计算机内存中的位置。使用内置函数id(obj1)可以返回对象objl的标识。

  • (2) 类型用于表示对象所属的数据类型(类),数据类型用于限定对象的取值范围以及允许执行的处理操作。使用内置函数 type(obj1)可以返回对象obj1 所属的数据类型。

  • (3)值用于表示对象的数据类型的值。使用内置函数 print(obj1)可以返回对象 objl的值。通过内置的 type()函数可以判断一个对象的类型。通过内置的 id()函数可以获取一个对象唯一的id 标识(CPython 的实现为内存存放位置)。

使用内置函数 type()id()和 print()查看对象。

print(id(123)) # 返回对应对象(123)在计算机内存中的位置
print(type(123)) # 返回对象所属的数据类型
print(123)
123

3035856984240

123

Out[9]:

123

查看python的内置函数对象

print(type(abs))
print(id(abs))
print(type(range))
print(id(range))

3035857087440

140725698374672

2.2.2 使用字面量创建实例对象

 对于内置对象,Python通常提供使用字面量直接创建实例对象的语法。

 Python 的数据类型定义了一个值的集合,在 Python代码中使用字面量表示某个数据类型的值。例如,12、101等表示 int数据类型的值;0.17,3,14 等表示 fat 数据类型的值;True和 False 表示 bool数据类型的值; Hello,World',张三'等表示 str 数据类型的值。

 字面量在 Pvthon语句中解释为表达式,Python 基于字面量创建相应的数据类型的对象

使用字面量创建实例对象。

print(123)
print("abc")

# python使用字面量123和“abc”分别创建了一个int型对象和一个str型对象

123

abc

2.2.3 使用类对象创建实例对象

通过直接调用类对象可以创建实例对象,其语法格式如下类对象(参数)

使用类对象创建实例对象

print(int(12))
print(complex(1,2))
"""Python使用int(12)创建一个整数数据类型的实例对象;使用complex(1,2)创建一个复数类型的实例对象。
另外,表达式的运算结果也可以创建新的对象;Python 语句 def 会创建函数对象;class语句会创建类对象,详细阐述参加后续章节"""

12

(1+2j)

Out[18]:

'Python使用int(12)创建一个整数数据类型的实例对象;使用complex(1,2)创建一个复数类型的实例对象。\n另外,表达式的运算结果也可以创建新的对象;Python 语句 def 会创建函数对象;class语句会创建类对象,详细阐述参加后续章节'

2.2.4 数据类型

 在 Python 语言中,所有对象都有一个数据类型。Python 数据类型的定义为一个值的集合以及在这个值集上的一组运算操作。

 例如整数数据类型(int),其值的集合为所有的整数,支持的运算操作包括+(加法)、一(减法)、*(乘法)//(整除)等,881024 等都是整数类型数据。 每个对象存储一个值,例如,int 类型的对象可以存储值 1234、99 或 1333不同的对象可以存储同一个值,例如,个str 类型的对象可以存储值'hello,另一个 str 类型的对象也可以存储值'hello'。在一个对象上可执行且只允许执行其对应数据类型定义的操作,例如,两个int 对象可执行乘法运算,但两个 str 对象不允许执行乘法运算。

 Python 数据类型包括内置数据类型和自定义数据类型。Python 语言提供了丰富的内置数据类型,用于有效地处理各种类型的数据。本书后续章节将展开内置数据类型和自定义数据类型的阐述。

2.2.5 变量和对象的引用

 Python 对象是位于计算机内存中的一个内存数据块。为了引用对象,用户必须通过赋值语句把对象赋值给变量(也称之为把对象绑定到变量)。指向对象的引用即变量。

使用赋值语句把对象绑定到变量。

a=1#字面量表达式1创建值为 1的 in型实例对象并绑定到变量a
b=2#字面量表达式2创建值为2的int 型实例对象并绑定到变量b
c=a+b#表达式a+b创建值为3的 int 型实例对象并绑定到变量c

 Python使用字面量表达式12和表达式ab创建3个整型对象并使用赋值语句把3个对象分别绑定到变量 ab和c。 字面量用于创建值为字面量的对象,即某个数据类型的实例对象;表达式使用运算符实现多个操作数(对象)的运算操作,并返回结果对象。用户可以把对象通过赋值语句赋值给一

2.2.6 python是动态类型语言和强类型语言

一句话概括一下!!!

  • 变量不需要声明数据类型,python会自动根据赋值来决定数据类型

  • 不同数据类型相加的话会报错,不能自动跳转

2.2.7 对象内存示意

详情见另一本笔记《数据结构与算法》会更详细的介绍

2.2.8 不可变对象和可变对象

 简单一句话概括什么是可变对象什么又是不可变对象

  • 不可变对象一旦创建,其值就不能被修改

  • 可变对象的值可以被修改

 ython对象的可变性取决于其数据类型的设计,即是否允许改变其值

 python中大部分对象都是不可变对象(记住这个就行!!)

2.3 标识符及其命名规则

 在 Python 语言中,包模块、类函数变量等的名称必须为有效的标识符

2.3.1 标识符

 标识符是变量、函数、类、模块和其他对象的名称。标识符的第一个字符必须是字母、下画线(“_”),其后的字符可以是字母、下画线或数字。一些特殊的名称,例如 if、for 等,作为Python语言的保留关键字,不能作为标识符。

 例如,a_int、a_float_strl、strname funcl 为正确的变量名;而99var,It'sOK、for(关键字)为错误的变量名。

注意:

  • (1)Python 标识符区分大小写。例如,ABC和abc 视为不同的名称。

  • (2)以双下画线开始和结束的名称通常具有特殊的含义。例如,init_为类的构造函数,一般应避免使用。

  • (3)避免使用 Python 预定义标识符名作为自定义标识符名。例如,NotImplemented、Ellipsis,int、float,list,str,tuple 等。

2.3.2 保留关键字

关键字即预定义保留标识符。关键字有特殊的语法含义,各关键字的使用将在后续章节陆续阐述。关键字不能在程序中用作标识符,否则会产生编译错误。

2.33Python 预定义标识符

 Python语言中包含许多预定义内置类、异常、函数等,例如 float、ArithmeticError、print等。用户应该避免使用Python 预定义标识符名作为自定义标识符名。使用Python的内置函数 dir(builtins )可以查看所有内置的异常名函数名等 使用“http://www.logilab,org/project/pylint” 上提供的pylint 工具可以检测 Python源代码是否存在潜在的问题。

2.3.4命名规则

Python语言遵循的命名规则如表所示

Python 语言的命名规则

类型

命名规则

举例

模块/包名

全小写字母,简单、有意义,如果需要可以使用下画线

math,sys

函数名

全小写字母,可以使用下画线增加可阅读性

foo()、my_func()

变量名

全小写字母,可以使用下画线增加可阅读性

age,my_var

类名

采用 PascalCase命名规则,即多个单词组成名称,每个单词除第一个字母大写外其余的字母均小写

MyClass

常量名

全大写字母,可以使用下画线增加可阅读性

LEFT、TAX RATE

2.4变量和赋值语句

 计算机程序通常用于处理各种类型的数据(即对象),不同的数据属于不同的数据类型,支持不同的运算操作。 计算机程序处理的数据必须放入内存。机器语言和汇编语言直接通过内存地址访问这些数据,而高级语言则通过内存单元命名(即变量)来访问这些数据。 在 Python 3 中一切皆为对象。对象是某个类(类型)的实例,对象由唯一的 id 标识。对象可以通过标识符来引用,对象引用即指向具体对象实例的标识符,也称之为“变量”

2.4.1变量的声明和赋值

 变量的声明和赋值用于把一个变量绑定到某个对象,其语法格式如下:

 变量名=字面量或表达式最简单的表达式是字面量,Python 基于字面量的值创建一个对象,并绑定到变量;对于复杂的表达式,Python先求值表达式,然后返回表达式结果对象,并绑定到变量Python 变量被访问之前必须初始化,即赋值(绑定到某个对象)否则会报错

变量赋值声明不用讲了吧,要是这个不会重开吧

2.4.2链式赋值语句

链式赋值(chainedassignment)的语句形式如下:

变量1=变量2=表达式  <----->  变量2=表达式;变量1=变量2

链式赋值用于为多个变量赋同一个值

2.4.3 复合赋值语句

复合赋值运算符不仅可以简化程序代码,使程序精练,而且可以提高程序的效率Python 中的复合赋值运算符如表所示。

运算符

含义

举例

等效于

+=

加法赋值

sum += item

sum = sum + item

+=

字符串拼接

aStr +="Foo"

aStr = aStr 十"Foo'

-=

减法赋值

count -= 1

count = count-1

*=

乘法赋值

x *= y + 5

x = x * (y + 5)

/=

除法赋值

x /= y-z

x=x/ (y-z)

//=

整除赋值

x //= y - z

x=x//(y-z)

%=

取模赋值

x %= 2

x = x % 2

**=

幂运算赋值

X **= 2

x = x ** 2

<<=

左移赋值

x <<= y

x = x << y

>>=

右移赋值

x >>= y

x = x >> y

$=

按位与赋值

x &= y

x = x & y

l=

按位或赋值

x l= y

x = x l y

^=

按位异或赋值

X ^= Y

x = x ^ y

2.4.4 删除变量

In [1]:

x=5
del x
x

---------------------------------------------------------------------------NameError Traceback (most recent call last)

~\AppData\Local\Temp/ipykernel_14820/1788730911.py in 1 x =5 2del x

----> 3 x

NameError: name 'x' is not defined

2.4.5 序列解包赋值

Student_id,name,age,class1= ['112233', '叁召', 20, '智能nb' ]
print(Student_id)
print(name)
print(age)
print(class1)

112233

叁召

20

智能nb

交换变量(观察较c语言来讲更为简便)

a,b= (1,2)
a,b=b,a
print(a)
print(b)

2

1

2.5 表达式和运算符

2.5.1表达式的组成 表达式是可以计算的代码片段,由操作数和运算符构成。操作数、运算符和圆括号按一定的规则组成表达式。表达式通过运算后产生运算结果,返回结果对象。运算结果对象的类型由操作数和运算符共同决定。

运算符表明对操作数进行什么样的运算。运算符包括十、一、、/等。操作数包括文本常量(没有名称的常数值,例如 1、"ab")变量(例如i=123)类的成员变量/函数(例如 math.pi,math.sin(x))等,也可以包含子表达式(例如(2 * 10))。

表达式既可以非常简单,也可以非常复杂。当表达式包含多个运算符时,运算符的优先级控制各个运算符的计算顺序。例如,表达式 x + y * z 按 x+(y * z)计算,因为* 运算符的优先级高于 + 运算符。

importmath
a,b=2,10
print(a+b)
print(math.pi)
print(math.sin(math.pi/2))

12

3.141592653589793

1.0

2.5.2 表达式的书写规则

Python表达式遵循下列书写规则

  • (1)表达式从左到右在同一个基准上书写。例如,数学公式a'+b应该写为a** 2+b** 2.

  • (2)乘号不能省略。例如,数学公式 ab(表示 a 乘以 b)应写为 a* b。

  • (3)括号必须成对出现,而且只能使用圆括号;圆括号可以嵌套使用。

[例 2.23] 复杂表达式示例。 数学表达式1/2sin[a(x+1)+b]写成 Python 表达式为math.sin(a* (x+1)+b)/2。

2.5.3 运算符概述

Python 运算符用于在表达式中对一个或多个操作数进行计算并返回结果值,接受一个操作数的运算符被称作一元运算符,例如正负号运算符十或一;接受两个操作数的运算符被称作二元运算符,例如算术运算符十、一、* /等。

如果一个表达式中包含多个运算符,则计算顺序取决于运算符的结合顺序和优先级。优先级高的运算符优先计算,例如,在 1+2 * 3 中* 的优先级比十高,故先计算 2* 3。同一优先级的运算符按结合顺序依次计算,例如十、-(以及 * 、/)为同一优先级左结合的运算符,故1+2-3等同于(1+2)-3;2* 4/2 等同于(2* 4)/2。注意,赋值运算符=为右结合运算符,故a=b=c等同于a=(b=c)。用户可以使用圆括号“()”强制改变运算顺序。

print(11+22*3)
print((11+22)*3)

77

99

2.5.4 python运算符

https://blog.csdn.net/m0_56331594/article/details/122682736?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167177993516800217076865%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167177993516800217076865&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-122682736-null-null.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v1&utm_term=python%E8%BF%90%E7%AE%97%E7%AC%A6&spm=1018.2226.3001.4187

还是很全面的

2.6 语句

2.6.1 Python语句

语句是 Python 程序的过程构造块,用于定义函数、定义类、创建对象、变量赋值、调用函数、控制分支、创建循环等。 Python 语句分为简单语句和复合语句。

简单语句包括表达式语句赋值语句、assert 语句、pass 语 del语句return 语句、yield语句、raise 语句_break 语句、continue 语句 import 语句、global语句 nonlocal语句等。复合语句包括if语句,while 语句 for 语 try语with 语句函数定义类定义等。Python 语句涉及许多程序构造要素,将在本书后续章节陆续阐述。

In [22]:

# python语句示例
importmath
r=float(input("请输入圆的半径r:")) # 赋值语句,输入圆的半径r,并转换成float类型
C=2*math.pi*r# 赋值语句,计算圆的周长
S=math.pi*r**2# 赋值语句,计算圆的面积
print(f'圆的周长为:{C}') # 表达式语句,输出圆的周长
print(f'圆的面积为:{S}') # 表达式语句,输出圆的面积

请输入圆的半径r:5.2

圆的周长为:32.67256359733385

圆的面积为:84.94866535306801

2.6.2 Python语句的书写规则

  • (1)使用换行符分割,一般情况下:一行只写一条语句

  • (2)缩进问题:注释语句可以从任何位置开始,但是符合语句构造体必须缩进

  • (3)反斜杠(\)用于一个代码跨越多行的情况。如果语句太长一行不能表示完,可以用续行符(\)

  • (4)分号(;)用于在一行书写多条语句

2.6.3 符合语句及其缩进书写规则

一般是4个空格或者一个tab键( 当然两个空格的话也可以,就是全篇代码要统一缩进格数

如果条件语句,循环语句,函数定义和类定义比较短放在同一行也没事,具体如下:

In [25]:

for i in range(1,11):print(i,end=' ') # end = ''表示连续输出在同一行,python默认end = '/n'

1 2 3 4 5 6 7 8 9 10

2.6.4 注释语句

  • 1.第一种方式使用#号即可单行注释 ,警号后面需要加一个空格,如果单行注释加在一行代码后面,需要先空两个再写。

  • 2.第二种方式使用三个引号(单双都可以)即可多行注释

2.6.5 空语句

用pass语句

In [27]:

defdo_nothing():

pass

2.7 函数和模块

Python 语言中包括许多内置的函数,例如 print()max()等,用户也可以自定义函数。函数是可以重复调用的代码块,使用函数可以有效地组织代码,提高代码的重用率。

本节简要介绍函数的定义和调用,有关函数的展开阐述请参见第 8 章。

2.7.1 函数的创建和调用

Python使用复合语句 def 创建函数对象,其语法格式如下:

def 函数名([形参列表]):
    函数体

函数的调用格式如下。 函数名([实参列表]) 在创建函数时可以声明函数的参数,即形式参数,简称形参;在调用函数时需要提供函数需要的参数的值,即实际参数,简称实参。 函数可以使用 return 返回值。无返回值的函数相当于其他编程语言中的过程。

声明和调用函数示例(Echo.py)

In [28]:

def Echo():
    print("All we have is now")
    print("Those who follow the light will eventually become extremely bright")
    print("When a person stands on tiptoe to get close to the sun, the whole world can't block her sunshine")
    print("you can")
Echo()

All we have is now

Those who follow the light will eventually become extremely bright

When a person stands on tiptoe to get close to the sun, the whole world can't block her sunshine

you can

我也只是一个平平无奇的人,很高兴你能在努力的路上翻阅到我做的这一点点笔记,希望我们能够不停的与失败抗争然后骄傲的站在胜利的彼岸,这是我的20岁,也是我迟来的懂事,希望我们都能成功

2.7.2 python内置函数

内置函数:https://blog.csdn.net/python2021_/article/details/123812174?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522167178215416800213085300%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=167178215416800213085300&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-2-123812174-null-null.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v1&utm_term=python%E5%86%85%E7%BD%AE%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187

字符串内置函数:https://blog.csdn.net/qq_44214671/article/details/114178340?ops_request_misc=&request_id=&biz_id=102&utm_term=python%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%86%85%E7%BD%AE%E5%87%BD%E6%95%B0%E6%95%B4%E7%90%86&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-114178340.142^v68^control,201^v4^add_ask,213^v2^t3_esquery_v1&spm=1018.2226.3001.4187

2.7.3 模块函数

  • 1.通过执行import语句来导入python模块:import 模块名1,模块名2......

  • 2.from语句可以从一个模块中导入特定的项目(函数、变量)到当前的命名空间。语句格式:from 模块名 import 项目名1,项目名2......

  • 3.也可以通过import语句一次性导入模块的所有项目(函数、变量),但该语句导入的项目并不包括那些名称由单一下划线_开头的项目。 语句格式:from import 模块名* 但很少使用这种方法,因为导入的其他来源的项目名称,很可能覆盖已有的定义。

python程序设计与算法编程基础课后编程题

In [33]:

# 输入本金、年利率和年份,计算复利(保留两位小数),用户可以使用 “ print(str.format(" 本金利率和为 :{0:2.2f}", amount))”的语句形式输出程序运行效果(结果保留两位小数)。

importmath
 
benjin = float(input('请输入本金'))
ratio = float(input('请输入年利率'))
years = int(input('请输入年数'))
f = benjin*math.pow((1+ratio/100), years)
print(f'本金利率和为:{f:.2f}')

请输入本金50

请输入年利率1.5

请输入年数5

本金利率和为:53.86

In [34]:

# 输入球的半径,计算球的表面积和体积 (结果保留两位小数)

importmath
 
r=float(input('请输入球的半径:'))
area=4*math.pi*r**2
volume=4/3*math.pi*r**3
print(f"球的表面积为:{area:2.2f},体积为:{volume:2.2f}")

请输入球的半径:5.2

球的表面积为:339.79,体积为:588.98

In [35]:

# 根据输入本金 b、年利率 r 和年数 n 计算最终收 v,v=b(1+r)";然后编写测试代码,提示输入本金、年利率和年数,显示最终收益(保留两位小数)。

b=float(input('请输入本金:'))
r=float(input('请输入年利率:'))
n=int(input('请输入年数:'))
v=b* ((1+r/100) **n)
print(f'最终收益:{v:.2f}')

请输入本金:555

请输入年利率:1.2

请输入年数:5

最终收益:589.11

In [37]:

# 求解一元二次方程 ax*2 -bx+c =0

importmath
a=float(input('请输入系数a:'))
b=float(input('请输入系数b:'))
c=float(input('请输入系数c:'))
d=b*b-4*a*c#判别式
ifa==0andb==0:  
print('此方程无解!')
elifa==0andb!=0:
print('此方程的解为:',end='')
x=-c/b
print(x)
elifd==0:      #判别式等于0 
print('此方程有两个相等实根:',end='')
x=(-b)/2*a
print(x)
elifd>0:       #判别式大于0
print('此方程有两个不等实根:',end='')
x1=((-b)+math.sqrt(d))/2*a
x2=((-b)-math.sqrt(d))/2*a
print(x1,' 和 ',x2)
elifd<0:      #判别式小于0
print('此方程有两个共轭复根:',end='')
real=(-b)/2*a#实部
imag=(math.sqrt(-d))/2*a#虚部
x1=complex(real,imag)
x2=complex(real,-imag)
print(x1,' 和 ',x2)

请输入系数a:1

请输入系数b:-10

请输入系数c:16

此方程有两个不等实根:8.0 和 2.0

In [40]:

# 提示输入姓名和出生年份,输出姓名和年龄

importdatetime
 
name=input("请输入姓名:")
time=int(input("请输入出生年份:"))
now=datetime.date.today().year
age=int(now-time)
print(f"你好!{name}.您{age}岁。")

请输入姓名:叁召

请输入出生年份:2002

你好!叁召.您20岁。

你可能感兴趣的:(python)