内容正文:
第1章 Python语言基础
Python语言概述
Python语言开发环境配置
常量和变量
Python数据类型
运算
常用系统函数
程序设计语言
按照发展过程可分为机器语言、汇编语言和高级语言。
机器语言:机器语言是二进制语言,属于低级语言,直接使用二进制代码表示指令,是计算机硬件能直接识别和执行的程序设计语言。
汇编语言:使用助记符与机器语言中的指令进行一一对应,计算机不能直接识别,需要由汇编语言编译器将其转换成机器指令。
汇编语言和机器语言类似,不同计算机结构的汇编指令不同,难以移植,都属于低级语言。
高级语言:是一种接近自然语言的计算机程序设计语言,可以更容易地描述计算问题并利用计算机解决问题。
高级语言的语句是面向问题的,而不是面向机器的。
1.1 Python语言概述
编译与解释
使用高级语言编写的程序叫做源程序,它不能被计算机直接识别,必须经过转换才能执行。转换方式有两类:
编译是将源代码经过编译器(Compiler)转换为目标代码,目标代码是机器语言代码,因此其目标程序可脱离语言环境独立执行,也就是源程序一旦被编译,就不再需要编译器或源代码。
解释是将源代码一边由相应语言的解释器(Interpreter)“翻译”成目标代码,一边执行,也就是逐条翻译、逐条运行源代码。
Python语言是一种高级通用脚本编程语言,它是一种高层次的结合了解释性、编译性、互动性和面向对象的计算机程序设计语言。
虽然采用解释方式执行程序,但它的解释器保留了编译器的部分功能,也会生成完整的目标代码。这种将解释器和编译器结合的方式推动了现代脚本语言的演进。
1.1 Python语言概述
Python语言的发展
Python由荷兰的Guido van Rossum设计。
Python第一个版本于1991年初公开发行。
Python 2.0于2000年10月发布,增加了许多新的语言特性。
Python 3.0于2008年12月发布,此版本不完全兼容Python 2.0 ,导致Python 2.0与Python 3.0不兼容
1.1 Python语言概述
Python语言的特点
语法简洁:语法结构简单,没有太多的语法细节和规则要求
开源、免费:源代码公开,可以被自由使用、复制、修改和再发布。各种社区提供了成千上万不同功能的开源函数模块,而且还在不断地发展
跨平台 : Python已经经过改动被移植在许多平台上,包括Linux、Windows、FreeBSD(类UNIX操作系统),Symbian、Google基于Linux开发的android平台。Python程序可以在任何安装解释器的计算机平台上执行,因此,用该语言编写的程序可以不经修改地实现跨平台运行。
1.1 Python语言概述
Python语言的特点
强大的生态系统: Python解释器提供丰富的内置类和函数库,此外,世界各地的程序员在开源社区提供了大量成熟的第三方库。
模式多样: Python 3.0解释器内部虽然采用面向对象方式实现,但在语法层面同时支持面向过程和面向对象两种编程模式,更灵活。
1.1 Python语言概述
1.2.1安装Python
网址:https://www.python.org/downloads/。
根据操作系统(windows,Linux/UNIX,macOS)不同的python版本
1.2 Python语言开发环境配置
1.2 Python语言开发环境配置
选中“Add Python 3.* to PATH”复选框,并使用默认的安装路径,单击“Install Now”选项,这时进入系统安装过程,安装完成后单击close按钮即可。如果要设置安装路径和其他特性,可以选择“Customize installation”自定义安装选项。
1.2 Python语言开发环境配置
1.2.2启动Python解释器和集成开发环境
启动命令行形式的Python解释器
在Windows系统下,选择“开始”→“所有程序”→“Python 3.11”→“Python 3.11( 64-bit)”来启动命令行形式的Python解释器
1.2 Python语言开发环境配置
其中“>>>”是Python解释器的提示符,在提示符后输入一条语句敲回车键后,将会立即显示运行结果
Python 3.8 manuals 使用手册
python module docs有什么用?
让别人用你的模块时了解你的模块功能、接口等等
10
1.2.2启动Python解释器和集成开发环境
启动图形用户界面的Python集成开发环境(IDLE)
在Windows系统下,选择“开始”→“所有程序”→“Python 3.11”→“IDLE(Python 3.811 64-bit)”
Python集成开发环境(IDLE)是图形用户界面,集程序编辑、解释、执行于一体,是一个集成开发环境,可以提高编程的效率。
1.2 Python语言开发环境配置
1.2.3 运行Python程序
交互式:在启动命令行形式和图形用户界面形式下都可在提示符(>>>)后输入语句。例如,先在提示符>>>后输入一个输出语句,下一行将接着输出结果。
>>> print("Hello,World!")
Hello,World!
>>> print(1+3/4)
1.75
1.2 Python语言开发环境配置
1.2.3 运行Python程序
文件式:在Python解释器图形用户界面窗口,选择“File”→“New File”命令,或按Ctrl+N键,打开程序编辑窗口,如图所示。
在程序编辑窗口输入程序的全部语句,例如输入语句:
print("Hello,World!")
语句输入完成后,在Python程序编辑窗口选择“File”→“Save”命令,确定保存文件位置和文件名,例如e:\mypython\hello.py。
在Python程序的编辑窗口选择“Run”→“Run Module”命令,或按F5键,运行程序并在Python解释器图形用户界面窗口中输出运行结果。
1.2 Python语言开发环境配置
1.3.1 变量
一般定义:在程序运行过程中,其值可以改变的量称为变量。变量就是存储数据的容器(若干字节的存储单元),可用来存放数据,并通过变量名来操作数据。
在Python中,不仅变量的值可以变化,变量的类型也可以变化。
在Python语言中,变量不需要声明其数据类型,每个变量在使用之前通过赋值的动作,创建并开辟内存空间,并保存值。如果没有赋值而直接使用,会抛出变量未定义的异常。系统根据所赋的值,自动确定其数据类型。
1.3 常量和变量
1.3.1 变量
单个赋值,例如:
>>> a=12 #单个直接赋值,创建变量a,给12分配内存空间,让a指向12
>>> id(a) #查看a的内存地址
8791371028592
>>> a=a+1 #先计算出和13,把13赋给 a,给13分配内存空间,a指向13
>>> id(a) #不再指向12。Python具有内存自动管理功能,对于没有
8791371028624 # 任何变量指向的值,将自动删除,回收内存空间
基于值的内存管理方式,Python会为每个出现的值分配内存空间
1.3 常量和变量
1.3.1 变量
多个批量赋值和分别赋值。例如
>>> b=c=12.34 #多个批量赋值,只给12.34分配内存空间
>>> id(b),id(c) #查看b和c的地址,两个变量指向同一个值
(50852336, 50852336)
>>> x,y,z=34,3.5,"China" #分别赋值
>>> type(x) #x是整型(int)变量
<class 'int'>
>>> type(y) #y是浮点型(float)变量
<class 'float'>
>>> type(z) #z是字符串型(string)变量
<class 'str'>
1.3 常量和变量
1.3.1 变量
>>> a=1.0
>>> b=1.0
>>> id(a)
47789136
>>> id(b)
50852304
>>> a=1
>>> b=1
>>> id(a)
8791371028240
>>> id(b)
8791371028240
1.3 常量和变量
Python会为每个出现的值分配内存空间,哪怕它们的值相等
对于1这样简单的数值小的int类型对象,Python就只会为1分配一次内存空间,a和b均指向它,所以a和b的内存地址相同
1.3.1 变量
开发人员一般情况下不需要考虑内存管理问题,只要知道:
赋值的形式,通过赋值就定义好了变量:
单个赋值:a=3
多个批量赋值: b=c=3.4
分别赋值: d,e,f=34,3.5,"China"
1.3 常量和变量
Python中对变量描述错误的选项是()
A、Python不需要显式声明变量类型,在第一次变量赋值时由值决定变量的类型
B、变量通过变量名访问
C、变量必须在创建和赋值后使用
D、变量PI与变量Pi被看作相同的变量
正确答案:D
1.3.2 常量
在程序运行过程中,其值不能改变的数据对象称为常量(constant)
在字面上就能区分是什么类型的常量
35----整型
3.14----浮点型
“Hello World”----字符串型
还有很多其他类型
1.3 常量和变量
1.3.3 关键字和标识符
关键字(key word),就是Python语言中事先定义的、具有特定含义的标识符,又称保留字。关键字不允许另作它用,否则执行时会出现语法错误。
查看所有Python关键字,语句如下:
>>> import keyword
>>> print(keyword.kwlist)
1.3 常量和变量
以下不属于Python语言保留字的是()
A、class
B、pass
C、sub
D、def
正确答案:C
1.3.3 关键字和标识符
计算机程序处理的对象是数据,程序是描述数据处理的过程。在程序中,通过名称建立对象与使用的关系。这个名称就是标识符。
具体命名规则如下。
(1)由字母、数字、下划线_等组成,首字符不能是数字。
(2)标识符中的字母是严格区分大小写的。
(3)标识符不能与关键字一样。
(4)Python 3系列的标识符可以采用中文等非英语语言字符,但存在输入法的切换、平台编码支持、跨平台兼容等问题,从编程习惯和兼容性角度考虑,一般不建议用中文做标识符。
1.3 常量和变量
以下变量名中,符合Python语言变量命名规则的是()
A、33_keyword
B、key@word33_
C、nonlocal
D、_33keyword
正确答案:D
在Python语言中,不能作为变量名的是( )
A、student
B、_bmg
C、5sp
D、Teacher
正确答案:C
1.4 Python数据类型
第5章
第6章
1.4.1 数值类型
1.整型数据(int)
整数,有正整数、负整数和0,和数学中的整数概念一样。一般认为整型没有取值范围限制。
1.4 Python数据类型
进制 引导符号 描述
十进制 无 默认情况,例如0、-4、100
二进制 0b或0B 由0和1组成,例如0b1010、0B110
八进制 0o或0O 由0到7组成,例如0o101,-0O12
十六进制 0x或0X 由0到9,A到F组成,例如0x41,0XABC
以下选项中非数字的是()
A、0a123
B、0b101
C、0o123
D、0x123
正确答案:A
1.4.1 数值类型
2.浮点型
与数学中的实数概念一样,有两种表示形式:
(1)十进制小数形式。
它由数字和小数点组成,如3.23、3. .5
(2)指数形式。指数形式即用科学计数法表示的浮点数。
例如,45e-5、45e-6、9.34e2是合法的浮点型常量,分别代表45×10-5、45×10-6、9.34×102。
1.4 Python数据类型
以下是print(type(12.00))的运行结果的是()
A、<class ‘complex’>
B、<class ‘float’>
C、<class ‘int’>
D、<class ‘bool’>
正确答案:B
以下关于浮点数3.0和整数3的描述,正确的是()
A、两者使用相同的硬件执行单元
B、两者使用相同的计算机指令处理方法
C、两者是相同的数据类型
D、两者具有相同的值
正确答案:D
1.4.1 数值类型
3.复数型
a+bJ
其中a是复数的实部,b是复数的虚部,J表示-1的平方根(虚数单位)。J也可以写成小写j,注意不是数学上的i。
可以通过x.real和x.imag来分别获取复数x的实部和虚部,结果都是浮点型。
1.4 Python数据类型
>>>a=3+4j
>>>a.real
3.0
>>>a.imag
4.0
以下关于Python语言复数类型的描述中,错误的是()
A、复数可以进行四则运算
B、实数部分不可以为0
C、Python语言中可以使用z.real和z.imag分别获取复数z的实数部分和虚数部分
D、复数类型与数学中复数的概念一致
正确答案:B
关于Python复数类型的描述,以下选项错误的是()
A、实数部分和虚数部分都是浮点数
B、虚数部分通过“j”或“J”来表示
C、对于复数x,可以使用x.real获得x的虚数部分
D、虚数部分为1时,1不能省略
正确答案:C
1.4.1 数值类型
4.布尔类型
也叫逻辑类型,有 True(真或对)或False(假或错)两个值
值为真或假的表达式称为布尔表达式,Python的布尔表达式包括关系表达式和逻辑表达式。例如:
1.4 Python数据类型
>>> x=3
>>> y=4
>>> x>y #关系表达式
False
>>> x<y and x+y>0 #逻辑表达式
True
它们通常用来在程序中表示条件,条件满足结果为True,不满足结果为False。
Python语言提供三种基本的数字类型,它们是()
A、整数类型、浮点数类型、复数类型
B、整数类型、二进制类型、浮点数类型
C、整数类型、二进制类型、布尔类型
D、整数类型、二进制类型、复数类型
正确答案:A
1.4.2 复合数据类型---字符串
文本在程序中用字符串(string)类型表示。字符串是由0个或多个字符组成的有序字符序列,用单引号、双引号或三引号(三单引号或三双引号)括起来。
1.4 Python数据类型
例 1-1 不同形式的字符串
str1='Python' #单引号为定界符
str2="Python" #双引号为定界符
str3='我喜欢用"Python"语言编程'
#若字符串中本身就有双引号,就用单引号定界,反之亦然
str4='''少年智则国智
少年富则国富
少年强则国强
少年进步则国进步'''
#三单引号为定界符,可表示多行字符串
print(str1,str2,str3)
print(str4)
1.4.2 复合数据类型---字符串
转义字符以反斜杠“\”开头,后面跟字符或数字。转义字符具有特定的含义,不同于字符原有的意义,故称转义字符,主要用来表示那些用一般字符不便于表示的控制代码。
1.4 Python数据类型
转义符 含义 转义符 含义
\" 双引号
换行符
\' 单引号 \t 制表符
\\ 反斜杠 \b 退格
\a 响铃 \r 回车符
\ddd 1~3位八进制数表示的ASCII码所代表的字符 \xhh 1~2位十六进制数表示的ASCII码所代表的字符
下列转义字符能够实现换行的是()
A、 \b
B、
C、\r
D、\t
正确答案:B
1.4.2 复合数据类型---字符串
3.基本的字符串函数
(1)eval()函数
与字符串有关的一个重要函数,把字符串的内容作为对应的Python语句来执行。其调用格式为:
eval(字符串)
(2)len()函数
len()函数返回字符串的长度,即字符串中所包含的字符个数,其调用格式为:
len(字符串)
1.4 Python数据类型
1.4.2 复合数据类型---字符串
>>> a=5
>>> eval("a+1") #相当于直接执行a+1
6
>>> eval("3+4") #相当于直接执行a+1
7
>>> len("abc")
3
>>> len("字符串长度")
5
1.4 Python数据类型
例题:从键盘输入一个的学生的三门成绩,求这个学生的总分与平均分
a=eval(input('请输入第1门课程的成绩:'))
b=eval(input('请输入第2门课程的成绩:'))
c=eval(input('请输入第3门课程的成绩:'))
sum=a+b+c
ave=sum/3
print('总分={0:.2f},平均分={1:.2f}'.format(sum,ave))
1.4 Python数据类型
input函数 (课本P33 )
input([提示字符串]):从键盘读取一行数据并返回一个字符串。
>>> x=input()
12
>>> x
'12'
>>> x=int(input())
12
>>> x
12
int()函数将字符串转为整数
>>> x,y=eval(input())
3,4
>>> x
3
>>> y
4
输入”3,4”,经过eval()函数处理变为:3,4
x,y=3,4
1.4 Python数据类型
print函数(课本P36)
print(输出项1,输出项2,…,sep=分隔符,end=结束符)
sep缺省为空格,end缺省为回车
a,b=10,20
print(a,b)
print(a,b,sep=',')
print(a,b,sep=',',end='*')
print("hello")
print(a,b,sep=',',end='')
print("hello")
10 20
10,20
10,20*hello
10,20hello
1.4 Python数据类型
字符串的格式化
print('总分={0:.2f},平均分={1:.2f}'.format(sum,ave))
模板字符串.format(参数0,参数1,参数2…)
模板字符串是由普通字符和多个占位符“{}”组成,将模板字符串中的占位符用format中的参数替换
{<参数序号>:<填充字符><对齐方式><输出宽度><,><.精度><类型>}
1.4 Python数据类型
1.4.3 其他复合数据类型
基本数据类型:仅能表示一个数据,不可分解为其他类型的。
复合数据类型:将多个数据组织起来并统一表示。
列表、元组、字典和集合类型的数据包含多个相互关联的数据元素,所以称它们为复合数据类型。
列表、元组和字符串是有顺序的数据元素的集合体,称作序列(sequence)。序列可以通过各数据元素在序列中的位置编号(索引)来访问数据元素。字典和集合属于无顺序的数据集合体,不能通过位置编号来访问数据元素。
1.4 Python数据类型
1.列表
列表(list)是写在中括号[]之间、用逗号分隔的元素序列,元素的类型可以不相同,可以是数字、单个字符、字符串甚至可以包含列表(所谓嵌套)。例如:
>>> mlist=['brenden',45.3,911,'john',32]
列表中的元素是可以改变的。例如:
>>> a=[1,2,3,4,5,6]
>>> a[0]=9
>>> a
[9, 2, 3, 4, 5, 6]
1.4.3 其他复合数据类型
1.4 Python数据类型
2.元组
元组(tuple)是写在小括号之间、用逗号隔开的元素序列。元组中的元素类型也可以不相同。元组与列表类似,不同之处在于元组的元素不能修改,相当于只读列表。例如:
>>> mtuple=('brenden',45.3,911,'john',32)
要注意一些特殊元组的表示方法。空的圆括号表示空元组。当元组只有一个元素时,必须以逗号结尾。
1.4.3 其他复合数据类型
1.4 Python数据类型
任何一组以逗号分隔的对象,当省略标识序列的括号时,默认为元组。例如:
>>> 2,3,4
(2, 3, 4)
元组和列表有几点重要的区别。列表元素用中括号[]括起来,且元素的个数及元素的值可以改变。元组元素用小括号()括起来,且不可以更改。元组可以看成是只读的列表。
1.4.3 其他复合数据类型
1.4 Python数据类型
3.字典
字典(dict)是用花括号{}括起来的、用逗号分隔的元素集合,其元素由关键字和值组成,形式为:“关键字:值”。
1.4.3 其他复合数据类型
1.4 Python数据类型
>>> mdict={"学号":2022,"姓名":"张三","性别":"男","年龄":18}
>>> print(mdict["年龄"])
18
>>> mdict["年龄"]=19 #把年龄改为19
>>> mdict["班级"]="22计科1班" #增加一个键值对
>>> print(mdict)
{'学号': 2022, '姓名': '张三', '性别': '男', '年龄': 19, '班级': '22计科1班'}
4.集合
集合(set)是包含0个或多个数据元素的无序且不重复的数据类型。它的基本功能是进行成员关系测试和消除重复元素。可以用花括号{}或set()函数创建集合。student={'Tom','Jim','Mary','Tom','Jack','Rose'}
>>> mset={1,2,3,3,4}
>>> print(mset) #会去掉重复的元素
{1, 2, 3, 4}
>>> nset=set("hello")
>>> print(nset)
{'o', 'h', 'l', 'e'}
1.4 Python数据类型
1.5.1 算术运算符与算术表达式
Python的算术运算符有:
+(加)、-(减)、*(乘)、/(除)、//(整除)、%(求余)、**(乘方)
1.5 数值类型的运算
运算符 说明 举例
x+y x与y之和 2+3(结果是5) 2+3.0(结果是5.0)
x-y x与y之差 2-3(结果是-1)
x*y x与y之积 2*3(结果是6)
x/y x与y之商(商是浮点型) 5/2(结果是2.5) 4/2(结果是2.0)
x//y x与y之整数商,即不大于x与y之商的最大整数 5//2(结果是2) -5//2(结果是-3)
5//2.0(结果是2.0)
x%y x与y之商的余数,也称为模运算 10%4(结果是2) 5%3.0(结果是2.0)
x**y x的y次幂,即xy 5**2(结果是25) 25**0.5(结果是5.0)
/、//和%运算符都是做除法运算,
“/”运算符做一般意义上的除法,其运算结果是一个浮点数,即使被除数和除数都是整型,也返回一个浮点数; 8/4=?
“//”运算符做除法运算后返回商的整数部分。如果分子或者分母是浮点型,它返回的值将会是浮点类型;5//3=? 5//3.0=?
“%”运算符做除法运算后返回余数。
“**”运算符实现乘方运算,其优先级高于乘除运算,乘除运算优先级高于加减运算。
4*5/2**3=?
1.5.1 算术运算符与算术表达式
1.5 数值类型的运算
“1234”+1234的计算结果的是()
A、“1234”+1234
B、“12341234”
C、2468
D、提示类型错误,无法运行
正确答案:D
以下代码的输出结果是()
print(0.1+0.2==0.3)
A、-1
B、True
C、False
D、0
正确答案:C
1.5.1 算术运算符与算术表达式
由算术运算符将数值类型的变量连接起来就构成了算术表达式,它的计算结果是一个数值。不同类型的数据进行运算时,这些数据类型应当是兼容的,并遵循运算符的优先级规则。
算术表达式的所有字符都必须写在一行,特别是分数、乘方、带有下标的变量等。例如c=a2+b2应写成c=a**2+b**2
要根据运算符的优先级,合理地加括号,以保证运算顺序的正确性。特别是分数中的分子分母有加减运算时,或分母有乘法运算,要加括号。
1.5 数值类型的运算
1.5.2 数值运算函数
1.5 数值类型的运算
函数 说明
abs(x) 返回数字x的绝对值或复数x的模
divmod(x,y) 返回包含商和余数的元组,即(x//y,x%y)
max(x1,x2,..xn) 返回x1,x2,..xn的最大值,n没有限制
min(x1,x2,..xn) 返回x1,x2,..xn的最小值,n没有限制
pow(x,y[,z]) 返回(x**y%z),[]表示该参数可省略,即pow(x,y),返回x**y,即x的y次幂
round(x[,n]) 对x四舍五入,保留n位小数。n默认为0,即返回x四舍五入的整数值
1.5.3 数值类型转换函数(内置函数)
1.5 数值类型的运算
函数 说明
bin(x) 将整数x转换为二进制字符串
oct(x) 将整数x转换为八进制字符串
hex(x) 将整数x转换为十六进制字符串
int(x) 若x是浮点数,返回其整数部分(注意不是四舍五入)
若x是字符串(必须是整数字符串,否则报错),则返回对应的整数
float(x) 若x是整数,返回浮点数x
若x是字符串(必须是数字字符串),则返回对应的浮点数
complex(re[,im]) 生成一个复数,re为实部,im为虚部(缺省为0)
下列函数不能实现类型转换的是()
A、str()
B、type()
C、int()
D、float()
正确答案:B
下面是Python的内置函数的是()
A、linspace(a,b,s)
B、eye(n)
C、bool(x)
D、fabs(x)
正确答案:C
1.6 常用系统函数
Python语言有标准库和第三方库两类,第三方库需要安装后才能使用。每个标准库中定义了很多函数,这些函数称为系统函数。任何程序都可直接或间接地调用这些函数。在调用系统函数之前,先要用import语句导入库,格式为:
import 库名 或 import 库名 as 别名
from 库名 import 函数名1,函数名2…
from 库名 import *
数学库模块(math):数学运算函数
随机数模块(random):生成随机数的函数
时间(time):
日历(calendar):处理日期和时间的函数。
>>> import math
>>> math.sqrt(2)
1.4142135623730951
>>> from math import sqrt
>>> sqrt(2)
1.4142135623730951
如果希望导入模块中的所有函数定义,则函数名用“*”。格式如下:
from 模块名 import *
后两种方法不用加模块名.虽然方便,但推荐第一种,会引起混乱。
以下属于Python中导入语句的是()
A、class
B、return
C、import
D、print
正确答案:C
1.6.1 math函数库
(1)数学常量
e:自然对数
pi:圆周率
(2)数值表示函数
fabs(x): 返回x的绝对值(返回值为浮点数)
fmod(x,y):返回x与y的模,即x/y的余数(返回值为浮点数)
floor(x):对x向下取整,返回不大于x的最大整数
ceil(x): 对x向上取整,返回不小于x的最小整数
gcd(a,b):返回a与b的最大公约数
1.6 常用系统函数
>>> import math
>>> math.sqrt(2)
1.4142135623730951
>>> math.pow(2,1/2)
1.4142135623730951
61
1.6.1 math函数库
(3)幂对数函数
pow(x,y):返回x的y次幂
exp(x):返回e的x次幂,e是自然对数
sqrt(x):返回x的平方根
log(x[,base]):返回x的对数值即logbase x,缺省base时,返回x的自然对数ln x
1.6 常用系统函数
1.6.1 math函数库
.(4)三角运算函数
degree(x):将弧度转换为角度
radian(x):将角度转换为弧度
sin(x):返回x的正弦值,x为弧度
cos(x):返回x的余弦值,x为弧度
tan(x):返回x的正切值,x为弧度
asin(x):返回x的反正弦值,返回值为弧度
acos(x):返回x的反余弦值,返回值为弧度
atan(x): 返回x的反正切值,返回值为弧度
1.6 常用系统函数
例题
从键盘输入圆的半径,求圆的周长、面积和体积。
import math
r=eval(input('请输入圆的半径:'))
area=math.pi*r**2
len=2*math.pi*r
vol=4/3*math.pi*r**3
print('面积={0:.6f},周长={1:.6f},体积={2:.6f}'.format(area,len,vol))
1.6 常用系统函数
例题
import math
a,b,c=eval(input("请输入一元二次方程的3个系数a,b,c:"))
x1=(-b+math.sqrt(b*b-4*a*c))/(2*a)
x2=(-b+math.sqrt(b*b-4*a*c))/(2*a)
print("x1=",x1,"x2=",x2)
1.6 常用系统函数
(1)随机数种子:seed(x)
X为种子,只要种子相同,每次生成的随机数序列也相;缺省x为随机数,随机数完全不可重现
(2)随机挑选和排序
(3)生成随机数
random():随机生成一个[0.0,1.0)之间的小数
randint(a,b):随机生成一个[a,b]之间的整数
randrange(a,b[,c]):随机生成一个[a,b)之间以c(缺省为1)为步长的随机整数
uniform(a,b):随机生成一个[a,b]之间的小数
1.6.2 random函数库
1.6 常用系统函数
>>> random.seed(4)
>>> random.randint(1,6)
2
>>> random.randint(1,6)
3
>>> random.randint(1,6)
1
>>> random.seed(time.time())
>>> random.random()
0.6185156706459451
>>> random.random()
0.3172989452017847
>>> random.random()
0.207274437984716
>>>
66
1.6.3 time函数库
时间获取函数:time(),localtime([secs]),ctime(),gmtime()、mktime()
时间格式化函数:strftime(),strptime()
程序计时函数:sleep(),perf_counter()
1.6 常用系统函数
67
1.6.3 time函数库
时间获取函数:
time():返回当前时间的时间戳(浮点数)。时间戳是从Epoch(1970年1月1日00:00:00 UTC)开始经过的秒数。
localtime([secs]):接收从Epoch开始的秒数,并返回一个时间元组。时间元组包含9个元素,相当于struct_time结构。省略秒数secs时,返回当前时间戳对应的时间元组。
ctime([secs]):省略秒数secs时,获取系统当前时间(北京时间),返回一个以易读方式表示的时间字符串。否则返回从Epoch开始,经过secs秒后的时间字符串。
gmtime():获取当前时间(英国格林尼治时间),返回一个程序可处理的时间格式
1.6 常用系统函数
68
>>> import time
>>> time.time()
1678376004.6912215
>>> time.localtime()
time.struct_time(tm_year=2023, tm_mon=3, tm_mday=9, tm_hour=23, tm_min=33, tm_sec=37, tm_wday=3, tm_yday=68, tm_isdst=0)
>>> time.gmtime()
time.struct_time(tm_year=2023, tm_mon=3, tm_mday=9, tm_hour=15, tm_min=33, tm_sec=52, tm_wday=3, tm_yday=68, tm_isdst=0)
>>> time.ctime()
'Thu Mar 9 23:35:06 2023'
1.6.3 time函数库
时间格式化函数:
strftime(tpl,ts) :时间转字符串
tpl是格式化模板字符串,用来定义输出的效果,ts是时间类型的变量,ts的值由函数gmtime()或localtime(()获取。
>>> import time
>>> t=time.localtime()
>>> time.strftime("%Y-%m-%d %H:%M:%S",t)
'2022-11-11 17:34:31'
1.6 常用系统函数
1.6.3 time函数库
时间格式化函数:
strptime(str, tpl): 字符串转时间
strptime函数的功能是将字符串解析为给定格式的日期时间对象。str是字符串形式的时间值, tpl是格式化模板字符串,用来定义输入效果
>>> tstr="2022-11-11 18:24:24" #tstr是一个字符串形式的时间
>>> time.strptime(tstr,"%Y-%m-%d %H:%M:%S") #把tstr转换为指定格式的时间
time.struct_time(tm_year=2022, tm_mon=11, tm_mday=11, tm_hour=18, tm_min=24, tm_sec=24, tm_wday=4, tm_yday=315, tm_isdst=-1)
1.6 常用系统函数
1.6.4 calendar函数库
日历(calendar)模块提供与日历相关的功能。在默认情况下,日历把星期一作为一周的第一天,星期日为最后一天。要改变这种设置,可以调用setfirstweekday()函数。
firstweekday():返回当前的星期开始工作日
isleap(year):判断year是否为闰年True或False
leapdays(y1,y2):返回y1到y2年间的闰年数
setfirstweekday(weekday):0`6,代表周一到周日
calendar(year):返回指定年份的日历
month(year,month):返回某年某月的日历
1.6 常用系统函数
import calendar
x=calendar.calendar(2024)
print(x)
y=calendar.month(2024,3)
print(y)
1.7 常用系统函数应用举例
【例 1‑2】模拟打印下载进度条
import time
import random
random.seed()
start=time.perf_counter()
for i in range(11):
a=random.random()
time.sleep(a)
print("已下载",i/10*100,"%")
end=time.perf_counter()
print("总计用时",end-start,"秒 ")
1.7 常用系统函数应用举例
【例 1‑4】把当前系统的当月日历和当前时间打印输出。
import calendar
import time
t=time.localtime()
y=t.tm_year
m=t.tm_mon
print(time.strftime("%Y年%m月的日历为",t))
print(calendar.month(y,m))
print(time.strftime("现在时间是北京时间:%H:%M:%S %p",t))
$$