Python语言程序设计基础(笔记)//嵩天 黄天羽 杨雅婷(第零、一周)

Gritty 坚韧不拔之志

写在前面:

本笔记完全原创,基于MOOC和线下课堂的笔记互补,用于学习,严禁其他用途!

第零周:Pycharm 使用技巧

1.Pycharm 快捷键

代码回退: command(Ctrl)+z

多选:长按 command+光标选中

2.网站资源

Python123 - 编程更简单

语雀,为每一个人提供优秀的文档和知识库工具 · 语雀

Python语言程序设计_北京理工大学_中国大学MOOC(慕课)

3.补充

这是用于安装第三方库的国内镜像,在后面会用到,在此先不深纠

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

第一周:Python基本语法元素

1.代码高亮

编程的色彩辅助体系,不是代码要求

2.缩进

(1)一行代码开始前的空白区域,表示程序的格式框架

(2)有单层缩进和多层缩进之分

(3)(严格明确)缩进是代码的一部分

(4)(所属关系)表达代码间包含和层次关系的唯一手段

(5)(长度一致)程序内一致即可,一般用4个空格或一个tab;也不一定非得4个,但单一程序内缩进必须相同

(6)Python 中不同层级的代码之间强制要求缩进,并且相同层级的代码要求缩进的空格数量一致。

3.注释

(1)用于提高代码可读性的辅助性文字,不被执行

(2)单行注释,以#开头

(3)多行注释,开头结尾都有三个单引号'''

'''
xxxxx
'''

4.变量

(1)用来表示和保存数据的标识符号

(2)变量采用标识符(名字)来表示,关联标识符的过程叫命名TempStr是变量名字

(3)可以使用=来向赋值或修改值,=被称为赋值符号

(4)TempStr="82F"#向变量TempStr赋值"82F"

(5)变量定义时必须顶格

5.命名

(1)命名规则:大小写字母、数字、下划线和汉字等字符及组合

(2)注意:大小写敏感(即字母大小写不同,表义不同)、首字母不能是数字、不与保留字相同

6.保留字(关键字)共35 个

(1)被编程语言内部定义并保留使用的标识符

eg:if,elif,else,in

(2)大小写敏感

and

elif

import

raise

global

as

else

in

return

nonlocal

assert

except

is

try

True

break

finally

lambda

while

False

class

for

not

with

None

continue

from

or

yield

asyne

def

if

pass

del

await

7.数据类型

(1)供计算机理解的数据形式

(2)程序设计语言不允许存在语法歧义,需要定义数据的形式

eg:10,101,010关联一种计算机可以理解的形式

(3)程序设计语言通过一定方式向计算机表达数据的形式

eg:"123"表示字符串123,123则表示数字123

(4)10,011,100的三种数据类型表示

(1)整数类型:整型直接通过数字来表示,且无需添加引号eg:10011100

(2)字符串类型:"10,011,100"

(3)列表类型(相当于三个数字):[10,011,100]

(4)布尔类型:Ture/False且不加引号

#哈希函数hash(),能够进行哈希运算的类型是不可变类型,并产生一个整数哈希值
>>>hash("python is popular")
-7425766840899008624
>>>hash(["python",123])
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    hash(["python",123])
TypeError: unhashable type: 'list'

8.字符串类型

(1)由0个或多个字符组成的有效字符序列

(2)字符串由一对单引号或一对双引号表示或三个单引号

eg:""/'' eg:''' '''

为什么有那么多种:使得单引号和双引号可以包含到字符串内

(3)字符串是字符的有序序列,可对字符串进行索引

eg:"请"是"请输入带有符号的温度值:"的第0个字符

(4)字符串的序号

 

b5cb26442757154337556bcc0d38eaba.png

9. 字符串的使用

(1)使用[]获取字符串的一个或多个字符

(2)索引:通过序号访问字符串所包含字符的过程,返回字符串中的单个字符 <字符串>[M]

eg:"请输入带有符号的温度值:"[0] 或者 TempStr[-1]

(3)切片:通过序号组合访问字符串某个区间的过程,返回字符串中一段字符子串 <字符串>[M:N]

eg:"请输入带有符号的温度值:"[1:3]意思是从第一个开始,不到第三个,即'输入'

或者TempStr[0:-1]意思相当于把字符串的最后一个值去掉

TempStr[1:]表示字符串除首字符外的所有字符

(4)字符串切片的高级用法

<字符串>[M:N],M缺失表示至开头,N缺失表示至结尾

"零一二三四五六七八九十"[:3]结果为"零一二"

<字符串>[M:N:K],根据步长K对字符串切片

"零一二三四五六七八九十"[1:8:2]结果是"一三五七"

倒序技巧:"零一二三四五六七八九十"[::-1]结果是"十九八七六五四三二一零"

>>>s = "python语言程序设计"
>>>s[3:0:-1]#从序号0开始到3,以步长为1取反
'hty'

(5)字符串的特殊字符

转义符\ 即表达字符的本义

转义符表达特殊字符的本义

"这里有个双引号(\")"结果为这里有个双引号(")

转义符形成一些组合,表达一些不可打印的含义

"\b"表示回退、"\n"表示换行(光标移到下行首)、"r"回车(光标移到本行首)

10. 字符串操作符

由0个或多个字符组成的有序字符序列

操作符及使用

描述

x + y

连接两个字符串x和y,返回新的字符串

n*x 或 x*n

复制n次字符串x,返回新的字符串

x in s

如果x是s的子串,返回Ture,否则返回False

x == y

如果 x 是 s 的子串,返回 True,否则 False

问题: 获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出。

s = input()
ls = s.split("-")
print("{}+{}".foemat(ls[0],ls[-1]))
#WeekNamePrintv1.py
WeekStr = "星期一星期二星期三星期四星期五星期六星期日"
WeekID = eval(input("请输入星期数字(1-7):"))
pos = (WeekID - 1)*3
print(WeekStr[pos:pos+3])
#WeekNamePrintv2.py
WeekStr = "一二三四五六日"
WeekID = eval(input("请输入星期数字(1-7):"))
print("星期"+WeekStr[WeekID-1])

11. 字符串处理函数

一些以函数形式处理字符串功能

函数及使用

描述

len(x)

长度,返回字符串x的长度,也可返回组合数据类型的元素个数

len("一二三456")结果为6

str(x)

任意类型x所对应的字符串形式

str(1.23)结果为"1.23" str([1,2])结果为"[1,2]"

#str与eval相当于相反操作

hex(x)

整数x的十六进制小写形式字符串

hex(425)结果为"0x1a9"

oct(x)

八进制小写形式字符串,oct(425)结果为"0o651"

bin(x)

将数字 x 转换为其二进制形式,且为字符串类型

chr(u)

u为Unicode编码,返回其对应的字符

u 的取值范围为0~1114111(即十六进制 0x10FFFF)

ord(x)

x为字符,返回其对应的Unicode编码整数

12.Unicode编码

Python字符串的编码方式:统一字符编码,即几乎覆盖所有字符的编码方式;从0到1114111(0x10FFFF)空间,每个编码对应一个字符;Python字符串中每个字符都是Unicode编码字符

"1+1=2"+chr(10004)
#'1+1=2✔'
"这个字符♉的Unicode值是:"+ str(ord("♉"))
#这个字符♉的Unicode值是:9801
for i in range(12):
    print(chr(9800 + i),end="")#end等于空,end输出之后不换行
#♈♉♊♋♌♍♎♏♐♑♒♓

13.ASCII 码表

ASCII码表

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

ASCII值

控制字符

0

NUT

32

(space)

64

@

96

1

SOH

33

!

65

A

97

a

2

STX

34

"

66

B

98

b

3

ETX

35

#

67

C

99

c

4

EOT

36

$

68

D

100

d

5

ENQ

37

%

69

E

101

e

6

ACK

38

&

70

F

102

f

7

BEL

39

,

71

G

103

g

8

BS

40

(

72

H

104

h

9

HT

41

)

73

I

105

i

10

LF

42

*

74

J

106

j

11

VT

43

+

75

K

107

k

12

FF

44

,

76

L

108

l

13

CR

45

 

77

M

109

m

14

SO

46

 

78

N

110

n

15

SI

47

/

79

0

111

o

16

DLE

48

0

80

P

112

p

17

DCI

49

1

81

Q

113

q

18

DC2

50

2

82

R

114

r

19

DC3

51

3

83

X

115

s

20

DC4

52

4

84

T

116

t

21

NAK

53

5

85

U

117

u

22

SYN

54

6

86

V

118

V

23

TB

55

7

87

W

119

W

24

CAN

56

8

88

X

120

X

25

EM

57

9

89

Y

121

y

26

SUB

58

:

90

Z

122

Z

27

ESC

59

;

91

[

123

{

28

FS

60

<

92

/

124

 

29

GS

61

=

93

]

125

}

30

RS

62

>

94

^

126

~

31

US

63

?

95

 

127

DEL

14. 字符串处理方法

"方法"在编程中是一个专有名词

"方法"特指<a>.<b>()风格中的函数<b>(),a 为对象,b 为方法

方法本身也是函数,但与<a>有关,<a>.<b>风格使用

字符串及变量也是<a>,存在一些方法

一些方法形式提供的字符串处理方法 12 个

方法及使用

描述

str.lower()

返回字符串的副本,全部字符小写

"AbCdEfGh".lower()结果为"abcdefgh"

str.upper()

返回字符串的副本,全部字符大写

str.islower()

当 str 所有字符都是小写时,返回 True,否则返回 False

str.isnumeric()

当所有字符都是数字时,返回 Ture,否则 False

str.split(sep=None)

返回一个列表,由 str 根据 sep 被分隔的部分组成 "A,B,C".split(",")结果为 ['A','B','C']

str.join(iter)

将序列中的元素(如列表、元组、集合等)以指定的字符连接生成一个新的字符串

",".join("12345")结果为"1,2,3,4,5"#主要用于字符串分隔等

str.count(sub)

返回子串 sub 在 str 中出现的次数

"an apple a day".count('a')结果为 4

str.replace(old,new)

返回字符串 str 副本,所有 old 子串被替换为 new

"python".replace("n","n123.io")结果为"python123.io"

str.center(width[,fillchar])

字符串 str 根据宽度 width 居中,fillchar (填充内容)可选

"python'.center(20,"=")结果为'=======python======='

str.strip(chars)

从 str 中去掉在其左侧和右侧 chars 中列出的字符

"= python=".strip(" =np")结果为"ytho"

str.format()

返回字符串 str 的一种排版格式

str.find(sub)

返回 sub 子串在 str 中的最低出现序号,不存在返回-1

#lower和upper对非英文字符形态不改变
#islower不判断非英文形态
#isnumeric判断的数字是0~9,不包括小数(点)、正负号
#old和new的长度可以不同,当new为空字符串时,相当于删除了old部分
#center(width,fillchar)当width小于字符串长度时,返回str(即不发生改变),fillchar是单个字符
#find返回的数字为正整数,即正向索引,故不会有-1的出现
#strip方法只是去掉str左右两侧chars中列出的字符,不影响字符串内部
#split方法若不加内容,sep默认是空格,sep可字符或字符串,若sep出现在字符串两侧,则会在两侧产生一个空字符串
>>>"hththth".split('t')
['h', 'h', 'h', 'h']
#join方法于split方法互逆

15. 作业

#CaesarCodeEn.py
ptxt = input("请输入明文:")
for p in ptxt:
    if 'a'<=p<='z':
        print(chr(ord("a") + (ord(p) - ord("a") - 3) % 26),end='')
    else:
        print(p,end='')

16. 字符串类型的格式化

格式化是对字符串进行格式表达的方法,用于解决字符串与变量融合的格式安排问题

字符串格式化使用.format()方法,用法如下:

<模版字符串>.format(<逗号分隔的参数>)

"{}:计算机{}的CPU占用率为{}%".format("A","B","C")
#默认012按序填充
#"{1}:计算机{0}的CPU占用率为{2}%".format("A","B","C")
#也可指定填充
#可嵌套使用
>>>"圆周率{{{1}{2}}}是{0}".format("无理数","3.1415926","...")
'圆周率{3.1415926...}是无理数'

槽内部对格式化的配置方式

{<参数序号>:<格式化控制标记>}

 

9f61ae965826e59faef0a98fd12de0d3.png

参数序号的作用:

1.指定占位符的索引:冒号前的数字表示占位符的索引。例如,{1:x<4} 中的 1 表示使用第二个参数进行格式化(在Python3.6之后就不需要用这种难看的形式了)

2.指定变量名:冒号前可以使用变量名来指定占位符的内容。例如,{name:x^4} 中的 name 是一个变量名,表示使用该变量的值进行格式化

3.定义格式化选项:冒号后的部分可以定义格式化选项,如对齐方式、填充字符、宽度等。例如,{:<4} 表示左对齐,宽度为4

4.省略索引和格式化选项:如果冒号前后的内容都省略,则按顺序将元组中的内容以字符串格式显示

5.嵌套槽:在某些情况下,冒号前还可以嵌套其他槽,用于更复杂的格式化需求

#
print("{0:=^20}".format("PYTHON"))
#=======PYTHON=======
print("{0:*>20}".format("BIT"))
#*****************BIT
print("{:10}".format("BIT"))
#BIT,填充默认为空格,对齐为左对齐
>>>Money = input()
>>>Money = Money[:-4]
>>>print(Money)
1234567
123
>>>Money = input("请输入带有符号的货币值:")
>>>Money = Money[-4:]
>>>print(Money)
1234567
4567
#总结:冒号没数的一端代表到此端头

#默认填充为空格,对齐为左对齐

#如果字符串超过长度3,则以字符串长度显示

<类型>

整数<类型>

b

输出整数的二进制方式

c

输出整数的 Unicode 字符

d

输出整数的十进制方式

o

输出整数的八进制方式

x

输出整数的小写十六进制方式

X

输出整数的大学十六进制方式

浮点数<类型>

e

输出浮点数对应的小写字母 e 的指数形式

E

输出浮点数对应的小写字母 E 的指数形式

f

输出浮点数的标准浮点形式

%

输出浮点数的百分形式

print("{0:b},{0:c},{0:d},{0:o},{0:x},{0:X}".format(425))
#110101001,Ʃ,425,651,1a9,1A9
#b二进制表示形式、cUnicode编码形式、d 十进制表示形式、o八进制、x小写十六进制、X大写十六进制

print("{0:e},{0:E},{0:f},{0:%}".format(3.14))
#3.140000e+00,3.140000E+00,3.140000,314.000000%
#e、E使用科学计数法e、E形式表示浮点数;f为以通常的非科学计数法形式表示浮点数;以%形式表示浮点数

#精度的两种含义,对浮点数,表示小数位数(四舍五入);对字符串,表示输出的最大长度
>>>"{0:.4}".format("PYTHON")
'PYTH'

#英文的半角形式,中文的全角形式

#中文以字符形式表示,不可用作语法的一部分

17.数字类型

(1)整数

数学中的整数,包括正数和负数

(2)浮点数

数学中的实数,包含小数部分

eg:1.0

>>>type(123)
<class'int'>

18.数字

(1)浮点型:它通过数字和小数点来表示,无需添加引号。

(2)整数类型:整型直接通过数字来表示,且无需添加引号。

(3)

数据类型

+

-

*

/

整型和整型

整型

浮点型

整型和浮点型

浮点型

浮点型和浮点型

浮点型

(4)数字运算符

运算符

描述

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 次幂

(1)+ - * / == !=

(2)//取整 %取余(模)

(3)遵循“先乘除取整取模,后加减”的运算顺序,取整取模和乘除是同一等级,都会优先参与运算。

(4)逻辑运算:and且 or或 not非

(5)运算结果按宽的输出,即使下移类型

(5)字符串运算

(1)整型和字符串相乘,整型*字符串,输出的结果,是将字符串重复几次拼接在一起。

#整型*字符串
print(5*"123")#123123123123123
print("hello"*5)#hellohellohellohellohello

(2)字符串+字符串,输出的结果,是这几个字符串的拼接。

print("123"+"123")#123123

19.列表类型

(1)由0个或多个数据组成的有序序列

列表用[]表示采用,分隔各元素

eg:['F','f']表示两个元素'F'和'f'

(2)使用保留字in判断一个元素是否在列表中

TempStr[-1] in ['C','c']判断前者是否于列表中的一个元素相同

(3)里面用单引号或者双引号都可以

20.赋值语句

(1)由赋值符号构成的一段代码

(2)

C = (eval(TempStr[0:-1] -32)/1.8#右侧变量结果赋值给变量C

(3)

TempStr = input("")#input("")返回一个字符串,TempStr也是字符串

(4)

name = "Downey"
name = "Tony"
print(name)
#Tony,当我们放入别的东西时,原来的会被丢掉

(5)赋值数字不加引号,赋值汉字、英文加引号

(6)== 表示 "等于",in 表示成员包含且一般用在列表['','']

 

21.分支语句

(1)由判断条件决定程序运行的方向

(2)

if TempStr [-1] in ['F','f']:#如果if后为Ture则执行:后的语句,否则跳过

(3)每个保留字所在的行存在一个:,这是语法的一部分

冒号及后续缩进用来表示后续语句于条件的所属关系

(4)在判断语句中,对非零值判断为真;对数字0的判断为假;对 None 的判断为假。

22.函数

(1)根据输入参数参数不同输出的功能过程

类似数学y=f(x)

print("格式输入有误")#打印输出"格式输入有误"

(2)函数采用<函数名>(<参数>)方法使用

eval(TempStr[0:-1])#TempStr[0:-1]是参数

(3)input

从控制台获得用户的输入

格式:<变量> = input("提示信息字符串") #用户输入的信息以字符串的形式保存在变量中

TempStr = input("请输入")#TempStr用来保存用户的输入

(4)print

以字符的形式向控制台输出结果的函数

格式:print("拟输出的字符串或字符串变量")#其中的引号不做输出

print("转换后的温度是{:.2f}C".format(C))
#{}称为槽,后续变量C填充到槽中{:.2f}表示将变量C填充到这个位置时取小数点后两位

name = "Downey"
print(f"My name is {name}")
print(f"{name} is a good boy")
print(f"{name} likes playing football")
#f表示格式化输出
#My name is Downey
#Downey is a good boy
#Downey likes playing football

注意:输出的为变量时不用加引号

name = "Downey"
print(name)
#Downey
name = "Downey"
print("name")
#Error

(5)eval评估函数

去掉参数最外层引号并执行余下语句的函数

eval()函数将字符串转换成数字,不能省略,比例input得到字符串,eval才得到数字类型

格式:eval(<字符或字符串变量>)

eval("1")#1
eval("1+2")#3
eval('"1+2"')#'1+2'
eval('print("Hello")')#Hello

23.转义字符

(1)加上\(反斜杠),改变字符原有的含义

(2)eg:

\\

反斜线字符

\'

单引号字符

\"

双引号字符

\a

蜂鸣,响铃

\b

回退,向后退一格

\r

移动当前位置到本行开头

\n

移动当前位置到下一行开头(换行)

\t

水平制表符(tab)

\f

换页

\v

垂直制表

\0

NULL,什么都不做

#续行符\,在程序以多行显示,输出为单行
#换行符\n,在程序以单行显示,输出为多行
#原来是多行,想写在一行,用分号隔开;s=[1,2,3,4,5,6,7,8,9];random.shuffle(s);print(s)

24.报错

(1)SyntaxError,表示语法错误,注意中,英括号
(2)IndentationError,表示缩进错误,也就是表明这里的代码没有顶格

(3)invalid syntax 是无效语法,说明变量定义出错了

25.实例一:温度转换

#TempConvertV1.py
TempStr = input("请输入带有符号的温度值:")
if TempStr[-1] in ['F','f']:
    C = (eval(TempStr[0:-1]) - 32)/1.8
    print("转换后的温度是{:.2f}C".format(C))
elif TempStr[-1] in ['C','c']:
    F = 1.8*eval(TempStr[0:-1]) + 32
    print("转换后的温度{:.2f}F".format(F))
else:
    print("输入格式错误")
#TempConvert2.py
def TempConverter(TempStr):
    if TempStr[-1] in ["F","f"]:
        C = (eval(TempStr[0:-1])-32)/1.8
        return "转换后的温度是{:.2f}C".format(C)
    elif TempStr[-1] in ['C','c']:
        F = 1.8*eval(TempStr[0:-1]) + 32
        return "转换后的温度是{:.2f}F".format(F)
    else:
        return "输入格式错误"
value = input("请输入带有符号的温度值:")
print(TempConverter(value))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值