python程序设计笔记_Python 程序设计语言 笔记(二)

第二周 类型及应用

2.1类型 —— 编程语言对数据的划分

数字类型、字符串类型、元组类型

列表类型、文件类型、字典类型

(1)数字类型:数字类型对python语言中的数字的表示和使用进行了定义和规范

[1] 分类:①整数类型 ② 浮点数类型 ③ 复数类型

① 整数类型概念与数学一致,没有取值范围限制

例:1010(十进制数),0x9a(十六进制数,以0x/0X开头),0b010(二进制数,以0b/0B开头)0o123(八进制数,以0o/0O开头)

② 浮点数类型是带有小数点及小数的数字,数值范围和小数精度有一定限制,因系统而异

例:0.0(与整数0不同),96e4(科学计数法,e/E代表10的次幂,e/E后的数字为指数)

③ 复数类型概念与数学一致,z=a+bj(j/J代表虚数部分)例:12.3+4j

对于一个复数,如z = 1.1+9j,可以使用z.real和z.imag来获得复数的实部和虚部

[2] 数字类型的关系:

← 特例 ← 特例

整数 → 浮点数 → 复数 (范围逐渐扩大) 整数 浮点数 浮点数

因此这三种数字类型可以进行混合运算,生成结果为最宽类型 例:3 + 4.2 = 7.2

[3] 类型转换:利用int(), float() 和complex() 三个函数实现

例:int(4.5) = 4; float(4) =4.0; complex(4) = 4 + 0j;

【注意】不能将复数转成整数和浮点数!(但可以间接利用取实部虚部的方法实现)

[4] 数字类型的判断 —— type(x); 例:type(4.5)↙ 得到

[5] 数字类型的运算:

运算符和运算函数

操作含义

x+y

x与y之和

x-y

x与y之差

x*y

x与y之积

x/y

x与y之商

x//y

不大于x和y之商的最大整数

x%y

x与y之商的余数

+x

x

-x

x的负值

x**y

x的y次幂

abs(x)

x的绝对值

divmod(x,y)

(x//y,x%y)

pow(x,y)

x的y次幂

(2)字符串类型 —— 用双引号“”或单引号‘‘括起来的一个或多个字符

—— 可以保存在变量中,也可以单独存在

[1] 判断字符串类型:输入:type(str1)↙ 输出:

[2] 可以使用 \ 转义字符输出“”或‘‘之类的字符

也可以用同样的方法 \\ 输出转义字符,\n 输出换行符等

例:print(“\”大家好\””);

输出:”大家好”

[3] 字符串是一个字符序列,字符串最左端位置标示为0,向右递增

字符串中字符位置的标示称为“索引”,例如:

H

e

l

l

o

J

h

o

n

0

1

2

3

4

5

6

7

8

9

可以使用单个索引访问字符串的特定位置。格式如下:

[<索引>]

其中索引可以为常量和表达式

[4] python中字符串(设长度为L)索引从0开始,最后一个字符索引为L-1

同时也允许使用负数,对字符串从右至左进行反向检索,最右索引值为-1

可以通过两个索引值来确定一个范围,从而返回这个范围内的子字符串。格式如下:

[,]

其中start和end都为整型,索引范围为[start, end)

程序实例:

【题目描述】输入一个月份数字,返回对应月份名称的缩写

【分析】IPO模式:① 输入:输入一个表示月份的数字(1-12)

② 处理:利用字符串基本操作实现功能

③ 输出:输出数字对应月份名称缩写

【解答】

程序3:

# month.py

months="JanFebMarAprMayJunJulAugSepOctNovDec"

n=input("请输入月份数(1-12):")

pos=(int(n)-1) * 3

monthAbbrev=months[pos:pos+3]

print("月份简写是"+monthAbbrev+".")

输入: 输出:

7↙ 月份简写是Jul.

(3)元组类型(Tuple) — 包含0个至多个元素的类型,元素之间用逗号分割

例:t1 = 123, 45.6, “hello”; t2 = (); t3 = 12;

元组外部可以使用或不使用括号

[1]元组类型的三个特点: ① 元组中的元素可以是不同类型的,可以嵌套(用括号区分)

② 元组中的各个元素存在先后关系,可以通过索引来访问元组中的元素

例:t1[0];

③ 元组定义后不能更改和删除—— 安全

[2] 与字符串类型类似,可以通过索引区间来访问元组中的部分元素

也可以对元组进行+和*的运算 例:t2[1:];

(4)列表类型( List ) — 有序的元素集合

[1] 与元组类似,列表的每个元素类型可以不同,可以通过索引访问列表的单个元素

例:a = [0,1,2] print(a) 输出:[0,1,2]

[2] 与元组不同,列表的大小没有限制,可以随时修改

(5)小结:

[1] 序列(字符串、元组、列表)类型的操作:

序列操作符

操作的含义

+

连接两个序列

+ <整数类型>

对序列进行整数次重复

[<整数类型>]

索引序列中的元素

[<整数类型>:<整数类型>]

取序列的一个子序列

len()

序列中元素个数

for in

对序列进行循环列举

in

成员检查,判断是否在序列中

[2] 方法,格式如下:

.func()

① 字符串方法:

字符串方法

含义

.upper()

字符串中字母大写

.lower()

字符串中字母小写

.strip()

去掉两边空格和指定字符

.split()

按指定字符分割字符串为数组

.join()

连接两个字符串序列

.find()

搜索指定字符串

.replace()

字符串替换

② 列表方法:

列表方法

含义

.append(x)

将元素x增加到列表最后

.sort()

将列表元素排序

.reverse()

将列表元素反转

.index(x)

返回第一次出现元素x的索引值

.insert(i,x)

在位置i处插入新元素x

.count(x)

返回元素x在列表中的数量

.remove(x)

删除列表中第一次出现的元素x

.pop(i)

取出列表中位置i的元素并删除

2.2 math库和random库的使用及实例:

(1)math库:

函数

数学表示

含义

圆周率pi

π

π的近似值,15位小数

自然常数e

e

e的近似值,15位小数

ceil(x)

⌈x⌉

对浮点数向上取整

floor(x)

⌊x⌋

对浮点数向下取整

pow(x,y)

x^y

x的y次幂

log(x)

lnx

以e为底的对数

log10(x)

log10x

以10为底的对数

sqrt(x)

√x

平方根

exp(x)

e^x

e的x次幂

degrees(x)

弧度转角度

radians(x)

角度转弧度

sin(x)

sinx

x的正弦值

cos(x)

cosx

x的余弦值

tan(x)

tanx

x的正切值

asin(x)

arcsinx

x的反正弦值

acos(x)

arccosx

x的反余弦值

atan(x)

arctanx

x的反正切值

x∈[-1.0, 1.0]

(2)random库:

函数

含义

seed(x)

给随机数一个种子值,默认随机种子是系统时钟

random()

生成一个[0, 1.0]之间的随机小数

uniform(a,b)

生成一个a到b之间的随机小数

randint(a,b)

生成一个a到b之间的随机整数

randrange(a,b,c)

随机生成一个从a开始到b以c递增的数

choice()

从列表中随机返回一个元素

shuffle()

将列表中元素随机打乱

sample(,k)

从指定列表随机获取k个元素

【注意】seed()函数用来设置随机种子,随机种子相同,随机序列相同— 伪随机数

【实例】π的计算 — 蒙特卡洛方法(随机抽样/统计实验方法)

① 先构造单位正方形和1/4圆

② 向正方形内抛洒大量点

③ 统计落入圆内的点占所有点的比例

【分析】IPO:① 输入:抛点的数量

② 处理:对于每个抛洒点,计算点到圆心的距离

通过判断该点在圆内或圆外。统计圆内点的数量

③ 输出:π值

程序4:

# pi.py

from randomimport random

from math importsqrt

from time importclock

DARTS = 1200

hits = 0

clock()

for i inrange(1,DARTS): # 抛洒DARTS次

x, y = random(), random() # 给出随机坐标(x,y)

dist = sqrt(x**2 + y**2) # 计算抛点到原点的距离

if dist <= 1.0: # 判断距离是否在圆内,若是则hits自增1

hits = hits + 1

pi = 4 *(hits/DARTS) # 计算比值,得到π值

print("Pi的值是 %s" % pi)

print("程序运行时间是 %-5.5ss" % clock())

输出:Pi的值是 3.14

程序运行时间是 0.015s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值