1. 在文本文件中编写代码,以.py扩展名的方式保存,这个文件是一个Python的脚本。
2. 使用IDLE编写程序;
3. 在程序中添加注释,在注释的每一行的前面输入#号,
如:#这是一条注释
4.注释的另一种方式:使用三个单引号(或三个双引号)来添加多行注释,
如:
’’’
这是一条注释
这也是一条注释
‘’’
5. 对于超长语句,最好使用圆括号()来连接行;
补充:
1. 使用内置函数type(object)可以返回object的数据类型;
如:
>>> type(1)
<class 'int'>
>>> type(1.0)
<class 'float'>
>>> type('1')
<class 'str'>
也可用isInstance函数判断某个对象是否属于某个类型:
如:
isInstance(1,int)
2. 二进制、八进制、十六进制分别用0b,0o,0x表示;
3. 查看复数的时虚部:
>>> (3-4j).real
3.0
>>> (3-4j).imag
-4.0
变量和操作符
1.定义变量:
userAge=0
也可以一次定义多个变量:
userAge,userName=30,’Peter’
或者写成:
userAge=30
userName=’Peter’
2.命名一个变量
python中,一个变量名仅可以包含字母(a-z,A-Z)、数字或者下划线(-);
第一个字符不能是数字;
如:username,user_name或userName_2;
但是:2userName是不对的;
Python中,print,input,if,while等预留的单词不能用作变量的名字;
赋值符号
1.=是一个赋值符号;
2. x=y和y=x含义不同;
基本操作符
1. 除法/; 整除//; 取余%; 指数**;
如:x=5,y=2
x**y=25(5的2次方)
分配操作符
1. x+=2 即:x=x+2
2 .x-=2 即:x=x-2
其它的分配操作符:*=、+=、-=等等;
python中的数据类型
整型
1. 整型是没有小数部分的数字;如:-5、-3、0等等;
2. 声明一个整型:
variableName=initial value
如:
userAge=20,mobileNumber=123456598
浮点型
1. 浮点型表示带有小数点部分的数字;如:1.234、-0.023、12.098;
2. 声明一个浮点型:
variableName=initial value
如:
userHeight=1.87,userWeight=66.2
字符串
1. 字符串表示的是文本;
2. 声明字符串
使用variableName=’initial value’(单引号)
或者variableName=”initial value”(双引号)
如:
userName=’Peter’,userSpouseName=”Janet”,userAge=’30’
3. 使用连接符号(+)连接多个字符串;
如:”Peter”+”Lee”=“PeterLee”
补充:
1. 使用id()函数可以确切知道变量引用的内存地址;
如:
>>> x=1
>>> id(x)
1348720432
内建的字符串函数
upper()方法可以把字符串的每一个字符都变成大写;
如:’Peter’ .upper() 可以得到:”PETER”
使用%操作符格式化字符串
1. 使用%操作符格式化字符串,包括三个部分:
第一部分包括要写出格式化的字符串;
第二部分%;
第三部分使用小括号;()括号内包括插入字符串的变量或者值;
例:
brand='Apple’
exchangeRate=1.2356225
message='the price of this %s laptop is %d USD and the exchange rate is %4.2f USD to 1 EUR' %(brand,1299,exchangeRate)
结果:the price of this Apple laptop is 1299 USD and the exchange rate is 1.24 USD to 1 EUR
分析:
%s格式化符号表示一个字符串;上面是“Apple”;
%d格式化符号表示一个整数;上面是1299;
“%5d”%(123)显示“ 123”(前面两个有空格,总长度是5);
%f格式化符号用于格式化浮点数(有小数点的数字);
%4.2f其中4表示总长度,2表示2个小数位;
%7.2f来格式化:显示“ 1.24”(有两个小数位,前面3个空格,总长度是7)
使用format方法格式化字符串
1. 使用format方法时,不使用%s、%f或者%d作为占位符;使用大括号{ };
例:
message='The price of this {0:s} laptop is {1:d} USD and exchange rate is {2:4.2f} USD to 1 EUR' .format('Apple',1299,1.2356987)
print(message)
结果:The price of this Apple laptop is 1299 USD and exchange rate is 1.24 USD to 1 EUR
分析:
参数“Apple”的位置是0,1299的位置是1,而1.2356987的位置是3;
位置总是从0开始;
{0:s}是让解释器用位置0的变量来替换{0:s},它是一个字符串格式(因为格式符号是“%s”);
{1:d}指的是位置1的变量,它是个整数类型(格式符号是d);
{2:4.2f}指的是位置2的变量,它是个浮点类型(格式符号是4.2f);
例:
message='The price of this {} laptop is {} USD and exchange rate is {} USD to 1 EUR' .format('Apple',1299,1.2356987)
print(message)
结果:The price of this Apple laptop is 1299 USD and exchange rate is 1.2356987 USD to 1 EUR
分析:
这个例子中没有指定变量的位置,解释器会根据大括号内所提供的变量顺序来替换。
2. 另一个例子:
message1='{0} is easier than {1}'.format('Python','Java' )
print message1
结果:
Python is easier than Java
例:
message4='{}'.format(1.23423458)
print message4
结果:
1.23423458
Python中的类型转换
1. Python中的int()函数接收一个浮点型或者合适的字符串,将它转换为整型;
如:
int(5.712987)
结果:5 #小数点后的数字都被删除了
如:输入int(“4”),得到4;
注:不能输入int(“Hello”)或者int(“4.22321”),这两种情况下都会得到错误信息;
2. float()函数接收一个整型或者一个合适的字符串,把它转换为一个浮点型。
如:
float(2)或者float("2")
结果:2.0
如:float(“2.09109”) 结果:2.09109
3. str()函数把一个整型或浮点型转换为一个字符串;
如:
str(2.1) 结果:2.1
列表
1. 列表通常表示的是相关数据的一个集合;
如:userAge=[21,22,23,24,25]
2.列表中的单个值是可以通过它们的索引获取的,索引总是从0开始,而不是从1开始;
userAge[0]=21,userAge[1]=22
列表中的最后一个元素的索引是-1,倒数第二个的索引是-2,依次类推;
userAge[-1]=25,userAge[-2]=24
3. 如:userAge3=userAge[2:4]
结果:userAge3=[23,24]
分析:把列表userAge中索引为2到4-1的元素分配给了列表userAge3;
4.符号2:4叫作切片,它包括开始索引的元素,但不包括结尾索引的元素;
5.切片符号包括第三个数字时,第三个数字叫作步长;
如:
userAge4=userAge[1:5:2]
结果:userAge4=[22,24]
分析:得到的是索引1到索引5-1中每隔一个数字的子列表,因为步长是2;
6. 切片符号的默认选项中,默认的第一个数字是0,默认的第二个数字是要切片的列表的长度;
如:userAge[ :4]是从索引0到4-1的值;
userAge[1: ]是从索引1到索引5-1的值(因为userAge的长度为5,即userAge有5个元素);
7. 修改列表中的元素
userAge[1]=5,列表变成userAge=[21,5,23,24,25] #第二个元素的值换成了5
8. 在列表中添加元素
userAge.append(99)
得到userAge=[21,5,23,24,25,99] #列表末尾加了99
9.删除列表中的元素
del userAge[2]
得到userAge=[21,5,24,25,99] #第三个元素被删除了
例:
mylist=[1,2,3,4,5,"Hello"]
print(mylist)
print(mylist[-1])
mylist2=mylist[1:5]
mylist[1]=20
mylist.append("How are you")
del mylist[5]
print(mylist)
元组
1. 元组和列表很像,但是无法修改元组的值;
2. 元祖的初始值在后面的程序中保持不变;
3. 声明一个元组时,使用的是圆括号();多个值用逗号分隔;
如:
monthsOfYear=(“Jan”,”Feb”,”Mar”)
也可以用索引来获取元组的对应位置的值;
如:
monthsOfYear[0]=”Jan”,monthsOfYear[-1]=”Mar”
字典
1. 声明字典时,要求字典的关键字必须是唯一的(在一个字典中);
myDictionary={“Peter”:38,”John”:51,“Peter”:13} #这是错误的声明,因为Peter被两次用于字典的关键字;
如:
userNameAndAge={"Peter":38,"John":51,"Alex":13,"Alvin":"Not Avaible"}
或者使用dict()方法声明字典
userNameAndAge=dict(Peter=38,John=51,Alex=13,Alvin=”Not Avaible”)
2. 获取字典中的单个元素
userNameAndAge["John"]
结果:51
3. 修改字典中的元素
userNameAndAge["John"]=21
结果:
{'Alex': 13, 'Peter': 38, 'John': 21, 'Alvin': 'Not Avaible'}
4. 也可声明一个字典,且不分配任何的初始值;
写成:ditionaryName={}
5. 在字典中添加元素
userNameAndAge["Joe"]=40
结果:
{'Alex': 13, 'Peter': 38, 'John': 51, 'Joe': 40, 'Alvin': 'Not Avaible'}
6. 从字典中删除元素
del userNameAndAge["Alex"]
结果:
{'Peter': 38, 'John': 51, 'Alvin': 'Not Avaible'}
例:
myDict={"one":1.35,2.5:"Two Point Five",3:"+",7.9:2}
print(myDict)
print(myDict["one"])
print(myDict[7.9])
print(myDict[2.5])
myDict[2.5]="Two and a half"
myDict["New item"]="I'm new"
del myDict["one"]
print(myDict)
注:字典中元素的顺序与声明时的顺序是不一样的;
程序可交互
例:
myName=input("Please enter your name:")
myAge=input("What about your age:")
print("Hello World,my name is",myName,"and I am",myAge,"years old.")
input()
例:
myName=input("Please enter your name:")
input()函数用于给用户提供指导信息;
print()
1. print()函数用于给用户展示信息;
2. 用%格式化符号打印有变量的声明的方法:
print("Hello World,my name is %s and I am %s years old."%(myName,myAge))
3. 用format()方法打印出相同语句:
print("Hello World,my name is {} and I am {} years old".format(myName,myAge))
三引号
1. 要显示一段很长的信息,可以使用三引号(‘ ‘ ‘或者” “ “),让信息扩展到多行;
如:
print('''Hello World.MY
name is James andI
am 20 years old.''')
这样有利于消息的可读性;
转义符号
1. 使用\(反斜杠)符号来转义字符;
2. 如:
print('Hello\tWorld')
结果:Hello World
3. \n表示打印输出
如:print(‘Hello\nWorld’)
结果:
Hello
World
4. \\(打印反斜杠本身);
如:print(‘\\’)
结果:\
如:\’’(打印双引号)
例:
print("I am 5'9\"tall")
print('I am 5\'9"tall')
5. 若不想把\t翻译成一个制表符号,应该输入print(r’Hello\tWorld’)
结果:Hello\tWorld
选择和判断
条件语句
!=(不等于)
<=(小于等于)
>=(大于等于)
如:5>=2
5>=5
逻辑符号:and、or、not
if语句
if结构:
if condition 1 is met:
do A
elif condition 2 is met:
do B
elif condition 3 is met:
do C
elif condition 4 is met:
do D
else:
do E
注:elif表示“else if”;
Python使用缩进来表示语句的开始和结束;
例:
userInput=input('Enter 1 or 2: ')
if userInput=="1":
print("Hello World")
print("How are you?")
elif userInput=="2":
print("Python Rocks!")
print("I love Python")
else:
print("You did not enter a valid number")
结果:
Enter 1 or 2: 1
Hello World
How are you?
Enter 1 or 2: 2
Python Rocks!
I love Python
Enter 1 or 2: 3
You did not enter a valid number
补充:
例:
name=input("名字:")
chinese=float(input("语文:"))
math=float(input("数学:"))
english=float(input("英语:"))
average=(chinese+math+english)/3
if average>=85:
print(name,"一等奖")
elif average>=75:
print(name,"二等奖")
elif average>=65:
print(name,"三等奖")
else:
print(name,"无奖")
內联if
如:
num1=12 if myInt==10 else 13
分析:
这个语句在myInt等于10的时候把12分配给num1,否则它把13分配给num1;
例:
myInt=input("number:")
num1=12 if myInt==10 else 13
print(num1)
例:
myInt=input("number:")
print("This is task A" if myInt==10 else "This is task B")
for循环
1.通过迭代循环
1.Python中,可迭代意味着可以内部循环的对象;
例:
pets=['cats','dogs','rabbits','hamsters']
for myPets in pets:
print(myPets)
结果:
cats
dogs
rabbits
hamsters
若想显示列表中成员的索引值,可以使用enumerate()函数:
pets=['cats','dogs','rabbits','hamsters']
for index,myPets in enumerate(pets):
print(index,myPets)
结果:
0 cats
1 dogs
2 rabbits
3 hamsters
2.在字符串上循环
例:
message='Hello'
for i in message:
print(i)
结果:
H
e
l
l
o
2.在一段数字上循环
1.用内建的range()函数;
语法:range(start,end,step)
注:若step没有指定,将会生成一个连续数字的列表,即step=1;
end的值必须指定;
指定的end值不会出现在生成的列表中;
如:
range(5) #生成列表[0,1,2,3,4]
range(3,10) #生成列表[3,4,5,6,7,8,9]
range(4,10,2) #生成列表[4,6,8]
例:
for i in range(5):
print(i)
结果:
0
1
2
3
4
while循环
语句结构:
while condition is true:
do A
例:
counter=5
while counter>0:
print("counter=",counter)
counter=counter-1
结果:
counter= 5
counter= 4
counter= 3
counter= 2
counter= 1
注:要小心无限循环的危险;
break中断
当使用循环时,有时在满足某个条件时,你可能想要退出整个循环,此时可以使用break关键字;
例:
j=0
for i in range(5):
j=j+2
print('i= ',i,',j= ',j)
if j==6:
break
结果:
i= 0 ,j= 2
i= 1 ,j= 4
i= 2 ,j= 6
continue
当我们使用continue时,本次循环中在关键字后的程序将会在本次循环中被跳过;
例:
j=0
for i in range(5):
j=j+2
print('\ni= ',i,',j= ',j)
if j==6:
continue
print('I will be skipped over if j=6')
结果:
i= 0 ,j= 2
i= 1 ,j= 4
i= 2 ,j= 6
i= 3 ,j= 8
i= 4 ,j= 10
I will be skipped over if j=6
Try,Except
try,except语句在错误发生时可以控制程序执行的方式;
例:
try:
answer=12/0
print(answer)
except:
print("An error occurred")
结果:
An error occurred
例:
try:
userInput1=int(input("Please enter a number:"))
userInput2=int(input("Please enter another number:"))
answer=userInput1/userInput2
print("The answer is",answer)
myFile=open("missing.txt",'r')
except ValueError:
print("Error:You did not enter a number")
except ZeroDivisionError:
print("Error:cannot divide by zero")
except Exception as e:
print("Unkown error:",e)
结果:
第一种:
Please enter a number:12
Please enter another number:0
Error:cannot divide by zero
第二种:
Please enter a number:12
Please enter another number:3
The answer is 4.0
Unkown error: [Errno 2] No such file or directory: 'missing.txt'
在Python中其他常见的错误:
IOError:
ImportError:
IndexError:
KeyError:
NameError:
TypeError:
注:Python对于不同类型的错误预先定义了错误的信息,若想要显示这些信息,可以在错误类型后面使用as关键字;
如:
except Exception as e:
print("Unkown error:",e)
函数和模块
什么是函数?
例:
为了操作文本字符串,使用replace()函数;
"Hello World".replace("World","Universe")
为了在屏幕上显示文字;
print("Hello World")
定义函数
1.
例:
def checkIfPrime(numberToCheck):
for x in range(2,numberToCheck):
if(numberToCheck%x==0):
return False
return True
answer=checkIfPrime(13)
print(answer)
结果:true
变量作用域
1. 在一个函数内定义的任何变量仅在函数内可访问,这些变量叫局部变量;
在函数外定义的任何变量叫全局变量,可以在程序的任何位置访问;
补充:
1. 匿名函数:没有实际名称的函数;
使用lambda创建匿名函数;
打开并读取文件
例:
建立一个文本文件并保存为myfile.txt,接下来打开IDLE输入:
f=open('myfile.txt','r')
firstline=f.readline()
secondline=f.readline()
thirdline=f.readline()
print(firstline)
print(secondline)
print(thirdline)
f.close
结果:
显示出文本文件的三行文字;
使用for循环来读取文件
例:
f=open('myfile.txt','r')
for line in f:
print(line,end='')
f.close()
结果:跟上面那个例子的结果一样;
写入文本文件
例:
f=open('myfile.txt','a')
f.write('\nThis sentence will be append.')
f.write('\nPython is Fun!')
f.close()
结果:在myfile文本文件中增加了:
This sentence will be append.
Python is Fun!
通过缓冲大小来打开并读取文本文件
例:
inputFile=open('myfile.txt','r')
outputFile=open('myoutputfile.txt','w')
msg=inputFile.read(10)
while len(msg):
outputFile.write(msg)
msg=inputFile.read(10)
inputFile.close()
outputFile.close()
结果:
myfile和myoutputfile中的内容是一样的;
打开、读取并写入二进制文件
例:
把一个图片命名为:myimage.jpg,编辑程序:
inputFile=open('myimage.jpg','rb')
outputFile=open('myoutputimage.jpg','wb')
msg=inputFile.read(10)
while len(msg):
outputFile.write(msg)
msg=inputFile.read(10)
inputFile.close()
outputFile.close()
结果:在相同文件夹下得到一个新的jpg图片文件,看起来跟myimage.jpg一模一样;
删除和重命名文件
1. 删除文件:remove()函数;
语法是:remove('myfile.txt’)
2. 重命名文件:rename()函数;
语法是:rename(('myfile.txt’)
mammals 哺乳类,哺乳类动物;
类
注:Python中我们用import导入我们需要的模块。
图形界面设计
用title()方法设置标题文字;
用geometry()方法设置窗体大小;
当导入tkinter模块后,调用Tk()方法可初始化一个根窗体事例root;
图形绘制
canvas 帆布