附录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 字符串数据类型:该类数据用单引号或双引号来标识的。
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函数容易出错