图解数据结构-使用python(附录A 和附录B)

附录A:python语言快速入门

A.1 轻松学python程序

用过python的请忽略

A.2 基本数据处理

数据处理的基本对象是变量、常数。变量的值是可变的;但常数是固定不变的数据。注意命名规则:由数字、字母、下划线构成,但不能以数字开头,不能使用python自带的33个保留字作为变量名。具体保留字信息请看我的另一篇博客。

1. 变量名称 = 变数值

2.如果要让多个变量同时具有相同的值:num1 = num2 = 50

3. 当我们想要在同一行中给多个变量赋值时,可使用","来分隔变量(同时分配技术)

a,b,c = 80,60,25

4. 允许用户以";"来分隔表达式,以便连续声明不同的程序语句。

A2.1 数值数据类型

主要有整数型和浮点型数据 

A2.2 布尔数据类型:主要有True和False两种类型,常用于流程控制中的逻辑判断。

A2.3 字符串数据类型:该类数据用单引号或双引号来标识的。

扫描二维码关注公众号,回复: 5814631 查看本文章

A3 输入input和输出print

A3.1 输出print:用来输出指定的字符串和数值,

print('四书五经')
print('《大学》','《中庸》','《论语》','《孟子》', sep = '、',end = '。')
# 上最后一个表示用、作为分隔符;用。作为结束符

print()函数也支持格式化功能,主要是由’%‘字符与后面的格式化字符串来控制输出格式。

%s 代表输出字符串,例如:%7s ,固定7个字符,不足则在左方进行填充
%d 代表输出整数,例如:%7d,固定输出7个数字,不足则在左方进行填充
%f 代表浮点数,例如:%8.2f或%.7f 该部分的计算包括小数点,后者只需7小数位

输出转义符:print指令中除了输出一般的字符串或字符外,也可以在字符前面加上反斜杠“\”来通知编译程序将后面的字符当成一个特殊的字符,形成“转义字符”。

转义字符 说明
\t 水平制表字符(Tab键)
\n 换行符
\'' 显示双引号
\' 显示单引号
\\ 显示反斜杠
print('程序语言!\n 越早学越好')
程序语言!
越早学越好

A3.2 输入input函数

语法结构如下:变量 = input(提示字符串)

当我们输入数据再按Enter键后,就会输入的数据赋值给变量。提示字符串则是一段给用户的提示信息。

注:input所输入的内容是一种字符串,如果需要将该字符串转换为整数,就必须通过int()内建函数。input函数还可以指定数值以那种进制输出。

格式指定码 说明
%d 输出十进制数
%o 输出八进制数
%x 输出十六进制数,超过10的数字以小写字母表示。例如:0xff
%X 输出十六进制数,超过10的数字以大写字母表示。例如:0xFF
iVal=input('请输入8进制数值:')
print('您所输入8进制数值,其对应的10进制数为:%d' %int(iVal,8))
print('')
	
iVal=input('请输入10进制数值:')
print('您所输入10进制数值,其对应的8进制数为:%o' %int(iVal,10))
print('')
	
iVal=input('请输入16进制数值:')
print('您所输入16进制数值,其对应的10进制数为:%d' %int(iVal,16))
print('')
	
iVal=input('请输入10进制数值:')
print('您所输入10进制数值,其对应的16进制数为:%x' %int(iVal,10))
print('')


## 结果:

请输入8进制数值:>? 65
您所输入8进制数值,其对应的10进制数为:53
请输入10进制数值:>? 53
您所输入10进制数值,其对应的8进制数为:65
请输入16进制数值:>? 87
您所输入16进制数值,其对应的10进制数为:135
请输入10进制数值:>? 135
您所输入10进制数值,其对应的16进制数为:87

A4 运算符和表达式

表达式是由运算符与操作数所组成的。运算符诸如:+ - * / ,操作数诸如:变量、数值、字符

A4.1 算术运算符

算术运算符主要包含数学运算中的四则运算、求余数运算、整除运算、指数运算符等

x = 34+23
x = 89 - 43
x = 3*12
x = 125//7
x = 124 / 7
x = 2**4
x = 46*8

A4.2 复合赋值运算符

x += 1
x -= 1
x *= 6
x /= 2
x **= 2
x //= 5
x %= 6

A4.3 关系运算符

用来比较两个数值之间的大小关系,通常用于流程控制语句。正确返回True,错误返回False

运算符 说明
> A大于B,返回True
< A小于B,返回True
>= 大于等于
<= 小于等于
== 恒等于
!= 不等于

A4.4 逻辑运算符

not 非运算
and 有一者为False,则最后结果为False,短路保护
or 有一者为真,则最后结果为True,短路保护

A4.5 位运算符

位运算符是二进制位逐位进行运算,。在python中,如果要将整数转换为二进制,就可以使用内建函数bin().

操作数1  & 操作数2 操作数1、操作数2的值均为1时,才会返回1
操作数1  | 操作数2 操作数1、操作数2的值其中有一个为1时,就会返回1
操作数1  ^ 操作数2 操作数1、操作数2的值不同时,返回1,相同则返回0
~ 操作数

求反操作,将1变成0,将0变成1.

num1 = 9; num2 = 10 
bin(num1);bin(num2)
Out[18]: '0b1010'
print(bin(num2))
0b1010
print(num1 & num2 )
8
print(num1)
9
print(bin(num1))
0b1001
print(num1 | num2)
11
print(num1 & num2)
8
print(num1 ^ num2)
3
print(~num1)
-10

nums1 = 125
nums2 = 98475
print(bin(nums1))
0b1111101
print(bin(nums1<<2))
0b111110100
print(bin(nums2))
0b11000000010101011
print(bin(nums2>>2))
0b110000000101010

A.5 流程控制

if 语句

month=int(input('请输入月份: '))    
if 2<=month and month<=4:
    print('充满生机的春天')    
elif 5<=month and month<=7:
    print('热力四射的夏季')
elif month>=8 and month <=10:
    print('落叶缤纷的秋季')
elif month==1 or (month>=11 and month<=12):
    print('寒风刺骨的冬季')
else:
    print('很抱歉没有这个月份!!!')

# ex2
print('1.80以上,2.60~79,3.59以下')
ch=input('请输入等级分数: ')
#条件语句开始
if ch=='1':
    print('继续保持!')
elif ch=='2':
    print('还有进步空间!!')
elif ch=='3':
    print('请多多努力!!!')
else:
    print('error')

for循环

for循环又被称为计数循环,是一种可以重复执行固定次数的循环。python提供了range()函数用以搭配。

sum=0
number=int(input('请输入整数: '))
  
#递增for循环,从小到大打印出数字 
print('从小到大排列输出数字:')
for i in range(1,number+1):
    sum+=i  #设置sum为i的和 
    print('%d' %i,end='')
    #设置输出连加的算式 
    if i<number:
        print('+',end='')
    else:
        print('=',end='')
print('%d' %sum)

sum=0
#递减for循环,从大到小打印出数字 
print('从大到小排列输出数字:')
for i in range(number,0,-1):
    sum+=i 
    print('%d' %i,end='')
    if i<=1:
        print('=',end='')
    else:
        print('+',end='')
print('%d' %sum)

# 结果
请输入整数: >? 7
从小到大排列输出数字:
1+2+3+4+5+6+7=28
从大到小排列输出数字:
7+6+5+4+3+2+1=28

while循环

while条件表达式是用来判断是否执行循环的测试条件,当表达式结果为False时,就会结束循环的执行。

product=1
i=1
while i<6:
    product=i*product
    print('i=%d' %i,end='') 
    print('\tproduct=%d' %product)
    i+=1
print('\n阶乘的结果=%d'%product)
print()

# 结果
i=1	product=1
i=2	product=2
i=3	product=6
i=4	product=24
i=5	product=120
阶乘的结果=120

while True的用法:

sum=0
number=1
while True:
    if number==0:
        break
    number=int(input('数字0为结束程序,请输入数字: '))
    sum+=number
    print('目前累加的结果为: %d' %sum)

# 结果
数字0为结束程序,请输入数字: >? 85
目前累加的结果为: 85
数字0为结束程序,请输入数字: >? 78
目前累加的结果为: 163
数字0为结束程序,请输入数字: >? 90
目前累加的结果为: 253
数字0为结束程序,请输入数字: >? 54
目前累加的结果为: 307
数字0为结束程序,请输入数字: >? 0
目前累加的结果为: 307

A.6 其他常用的类型

其他常用的类型包括string类型、tuple元组、list列表、dict字典等。其中前三者都属于序列性的数据类型(可根据索引来进行取值),而字典是非序列的数据类型(其是通过键来进行索引的)。

srt字符串有很多实用的方法:

len(s) 返回字符串的长度
s.count('e') 找出字符串中子字符串出现的次数
s.split(sep = ' ') 根据sep来分隔字符串
s.find('easy') 检测字符串中是否包含字符串str,并返回其位置
s.upper() 全部大写
s.lower() 全部小写
s.capitalize() 将第一个字母转化为大写,其余均是小写
s.title() 将每个单词的首字母大写,其余全是小写

list是一种以中括号[]存放不同数据类型的有序数据类型。是一种可变的序列类型。常用的方法有:

append() 追加元素
sort() 排序,默认升序;reverse=True,降序
import sys

#声明字符串数组并初始化
newspaper=['1.北京晚报','2.作家文摘','3.参考消息', \
                          '4.证券报','5.不需要']
#字符串数组的输出
for i in range(5):
    print('%s  ' %newspaper[i], end='')

try :
    choice=int(input('请输入选择:'))
    #输入的判断
    if choice>=0 and choice<4:
        print('%s' %newspaper[choice-1])
        print('谢谢您的订购!!!')
    elif choice==5:
        print('感谢您的参与!!!')
    else:
        print('数字选项输入错误')

except ValueError:
    print('所输入的不是数字')

# 结果:
1.北京晚报  2.作家文摘  3.参考消息  4.证券报  5.不需要  请输入选择:>? 3
3.参考消息
谢谢您的订购!!!

list:[];tuple:() ;dict:{}

只有元组是不能任意更改其位置和他的内容值的。

A.7 函数

1. 自定义无参数函数

2.有参数行的函数

3.函数返回值 利用return语句

4.参数传递

两种传递调用方式:传值调用和地址调用

传值调用 会将自变量的值逐个复制给函数的参数,在函数中对参数值所做的任何修改都不会影响原自变量值(用于传入数据是不可变类型)
地址调用 所传递给函数参数值是变量的内存地址,参数值的变动连带着也会影响原来的自变量的值。(传入参数是可变类型)
#函数声明
def fun(a,b):
    a,b=b,a
    print('函数内交换数值后:a=%d,\tb=%d\n' %(a,b))

a=10
b=15
print('调用函数前的数值:a=%d,\tb=%d\n'%(a,b))

print('\n-------------------------------------')
    
#调用函数
fun(a,b)
print('\n-------------------------------------')
print('调用函数后的数值:a=%d,\tb=%d\n'%(a,b))

# 结果
调用函数前的数值:a=10,	b=15
-------------------------------------
函数内交换数值后:a=15,	b=10
-------------------------------------
调用函数后的数值:a=10,	b=15
# ex2

def change(data):
    data[0],data[1]=data[1],data[0]
    print('函数内交换位置后:')
    for i in range(2):
        print('data[%d]=%3d' %(i,data[i]),end='\t')

#主程序
data=[16,25]
print('原始数据为:')
for i in range(2):
    print('data[%d]=%3d' %(i,data[i]),end='\t')
print('\n-------------------------------------')
change(data)
print('\n-------------------------------------')
print("排序后数据为:")
for i in range(2):
    print('data[%d]=%3d' %(i,data[i]),end='\t')
## 结果
原始数据为:   
data[0]= 25	data[1]= 16	
-------------------------------------
函数内交换位置后:
data[0]= 16	data[1]= 25	
-------------------------------------
排序后数据为:
data[0]= 25	data[1]= 16	

附录B 常见错误分析

1.print 格式化字符串设置错误

2.局部变量在没有赋值前就被引用

3.列表索引超出范围的错误

4.运算符的操作数数据类型误用

5.没有考虑到运算符优先级的边际错误

6.列表索引使用不当数据类型而引发的错误

7.不当缩排造成的异常错误

8.不当声明@staticmethod所造成的错误

9.未将输入的字符串转换成整型:主要是input函数容易出错

猜你喜欢

转载自blog.csdn.net/Jasminexjf/article/details/89091967