Python入门之树莓派
Linux命令行$+命令
pwd显示当前目录
ls列表
cd改变当前目录,/
sudo超级用户输入,特权来操作系统相关设置或删除文件
sudo apt-get install 安装程序
sudo apt-get remove --auto-remove --purge packagename卸载程序
Python编程入门
IDLE开发环境
shell提供使用者使用界面的软件,壳,接受用户命令然后调用相应的应用程序,相当于cmd。
Python shell 里输入字符,就会使用
>>>这个符号,结果会出现在下一行。
编写的程序存放在文件里,IDLE编辑器。
程序应该保存到附件目录下,新建Folder文件夹,保存hello.py到改文件夹。
Run菜单,Run Module,运行程序。
变量,以小写且必须是字母开头,使用下划线代替空格。
循环,以冒号结尾表示还有代码要写。
>>>for x in range(1,10)
print(x)
range这个命令是排除结尾的最后一个数字的。
for in命令,for后必须跟一个变量,in之后,python会计算出一整套循环。
>>>list(range(1,10))
>>>import random引入一个库文件。
# 表示注释
if命令后面必须直接跟随一个条件,用冒号,表示接下来要执行的语句。
and表示与运算
or表示或运算
not true=false
elif=else if,变成三条逻辑线。
while true:用来进去循环,break用来跳出循环
字符串:
1.字符串可以通过=,赋值给变量。
字符串需要用单引号括起来然后赋值
2.len(变量名),求字符串的长度
3.用【数组】知道指定位置的字符
4.用【0:10】截取一部分字符串,第一个数字表示字符串开始的位置,第二个数字表示最后的一个字符串的位置顺延一位。
6.可以用+,把字符串加起来。
列表:
1.列表可以让变量包含一组数字和字符串,甚至包含一系列小的列表。
2. 例如,numbers=[....]
3.列表可以用+,组合起来。
4.列表可以用=,给表用元素赋新值。
5.numbers.sort(),表示排序
6.numbers.pop(移除哪个?),表示移除
7.numbers.insert(插入的位置,插入什么),在特定位置增加元素。
8.包含其他列表,[...[....]]。
9.桩函数stub,一些什么也不做的函数,只为实际函数占一个位置。
10.global定义全局变量。
函数:
1.关键词def开头,加函数名,加冒号
2.return 返回值
3.内置str函数转化为字符串
4.内建函数input会把参数作为提示符,并输出显示,然后返回用户输入的值。
5.内建函数find用来检测是否存在。
字典:
1.用字符串作为关键字,数作为数值。
2.关键字还是字符串,数值或元组。
3.但是数值可以是任何数据,甚至包括列表和另一个字典。
元组:
1.tuple=1,2,3。很像列表。但是不包括方括号。
2.元组是不可以改的。
多重赋值
a,b,c=1,2,3
多重返回值
return(number[0],number[-1]),number[-1]返回的是最后一个数。
异常处理
函数:
1.数值函数
2.字符串函数
3.列表函数
4.字典函数
5.类型转化
模块:
模块不仅可以在当前项中使用,也可以用在其他项目里。
1.import引入模块
2.import. random. as r
这样就给模块取了一个名字,r.randint就是调用模块里面的一个函数。
3.from random import randint
导入任意函数而不用担心名字错误。
4.from random import *
导入所有函数
5.Python库中有许多模块
string 字符串工具
datetime用来操作时间和日期
math数学函数
pickle用来存储和恢复文件的数据结构
urllib.request用来读取网页
tkinter用来创建图形用户界面
6.安装新模块pygame
sudo apt-get install python-pygame
1.打开LXTerminal
2.cd访问python目录
3.tar -xzf 解压文件
4.cd进去新建文件夹,执行install命令
5.用more INSTALL.txt看有没有其他需要说明的
6.用sudo apt-get install python3-dev安装
7.sudo python3 setup.py install
面向对象:
1.'abc'.upper()告诉'abc'需要它大写
'abc'是内建类str的实例
2.'abc'._class_ 获取一个对象的类型
定义类:
class 类名:
def定义函数
1.属于类的函数叫做方法
2.self参数指的是对象本身。
3.类中的函数只有实例化后才能用。
4.一个类必须有初始化的函数,而且self必须作为改函数的第一个参数。
5.所有的类中封装的方法,都必须有第一个self参数。
继承:
1.继承在类里的用法,就是给已经存在的类再创建一个版本。
2.class 子类(父类): 这种格式定义继承关系
3.对于子类来说,初始化函数,首先要请求父类的初始化函数,之后才可以定义新变量。
4.方法可以实现覆盖。
模块:
把子类和父类放到同一个模块。
后缀.py就可以
import 一个模块。
文件和互联网:
1.python程序运行结束后,变量里存储的任何值都会丢失,而文件就是让数据能够永久的存在的一种方式。
2.读取文件,f=open('文件路径')
word=f.read().splitlines() f.close()
3.读取文件的代码需要加一个try命令,防止出错。
4.文件名应该放在一个变量里。
5.读取大文件,一次读取太占用内存。所以可以每次只读取文件中的一行,f=open(word_file)
line=f.readline()
如果读到两行之间的空行,但那不是尾行,就返回尾行符\n。
6.f.read(20) 每次读取20个字符。
7.在打开文件时,除了可以指定要打开的文件名,也可以指定打开的文件模式。r模式,就是read读取模式。
w,写入,替换已经存在的文件内容。
a,附加,在已经存在的文件结尾处附加内容。
r+,以读取和写入模式打开文件。
8.一般在打开文件时,以r,w,a作为第二参数来写入文件。f=opten('文件名','w') f.write(.......) f.close()
9.文件系统:移动,复制文件
shutil包里包含许多操作文件的函数
import shutil
shutil.copy('test.txy','text_copy.txt')复制文件
shutil.move(),移动文件。
copytree()函数,复制整个文件夹。
rmtree()函数,删除路径和所有内容。
glob库,找到路径下的程序。
import glob
glob.glob('*.txt')
想要文件夹中的所有内容,glob.glob('*')
10.序列化(pickle):包括将变量内容保存在文件中,这样文件就可以在读取时得到最初的值。这样做的原因是在运行程序的过程中能够存储数据。
import pickle
f.open('mylist.pickle','w')
pickle.dump(mylist,f)
f.close()
序列化文件中的数据以文本的方式保存,但是不可读。
用以下方法可以把序列化文件重新读入内存构造出原始的对象:
f=open('mylist.pickle')
array=pickle.load(f)
f.close()
11.互联网:
import urllib.request
u='http://网页地址'
f=urllib.request.urlopen(u)
contents=str(f.read())
返回HTML文本
f.close()
要在打开URL之后尽快执行读取行。
12.Python的正则表达式,常用来处理复杂的字符串匹配或文本合法性验证。
13.更好的方法是寻找这个网站的官网服务接口,而不是返回HTML数据。这些服务一般都返回很多经过简单处理的数据,通常都是XML或者JSON。
14.Python下的Web服务。
15.图形用户界面:
Tkinter是python创建GUI的最常用工具。
from tkinter import *
root=Tk()
Label(root,text='Hello World').pack()
root.mainloop()
1.必须给Tk对象设置一个变量
2.给Label类创建一个实例,这是root的第一个参数,第二个参数就是要指定文本在Label里显示。
3.最后,pack方法会访问Label,这样Label就知道它自己该去的地方了
4.pack方法控制了窗口里显示的内容,简单来说,对网格中的组件使用了布局里的选择模式。
5.第一步就是要给程序建立框架,建立一个类App,定义一个初始化的方法,def _init_(self,master):
6.当创建一个app实例时,_init_方法会被自动调用,app=App(root)。
7.把Tk根对象转给创建用户界面的_init_()。
8.Frame类的对象可以包含其他对象和其他一些能把程序窗口美化的命令,frame=Frame(master) frame.pack()。
9.grid方法,网格布局,grid(row=0,column=0) 区域从(0.0)开始。
10.button=Button(frame,text='conver',command=self.convert)创建button对象。
11.root.wm_title('') 函数给窗口设置了标题。
12.当需要获取或设置文本框,标签等控件内容时,可以创建一些特殊的对象。最常用的是String Var,Double Var。
例如:
self.c_var=DoubleVar()
Entry(frame,textvariable=self.c_var).grid(row=0,column=0)
这个Double 与文本框关联在一起,通过创建Entry对象时的textvariable参数来指定。这就意味着文本框中会显示这个Double变量中的值。
13.其他GUI小部件
文本框类:Entry。
标签类:Lable。
复选按钮:Checkbox。
Checkbutton(frame,text='Checkbutton')
创建了一个旁边有标签的复选按钮。
Check_var=StringVar()
check=Checkbutton(frame,text='Checkbutton',variable=check_var,onvalue='Y',offvalue='N')
check.grid(row=0,column=0)
列表框:
1.listbox=Listbox(frame,height=3,selectmode=BROWSE)
for item in['red','green','blue']
listbox.insert(END,item)
listbox.grid(row=1,column=1)
2.可以用selectmode属性控制列表框里的选项:
3.SINGLE一次只选一个
BROWSE与SINGLE类似,但是允许用鼠标选择
MULTIPLE按住Shift,然后可以点鼠标左键可以选择多行
EXTENDED与MULTIPLE类似,但是可以使用Ctrl-Shift-单击选择范围。
4.该属性设置必须使用curselection方法找出列表框里选择的项。
5.Spinbox提供了另一种从列表中单选的方法:
Spinbox(frame,values=('a','b','c')).grid(row=3)
布局:
1.sticky属性来决定小单元格的位置。
2.frame.pack(fill=BOTH,expand=1)确保框架会被闭合的根窗口填满。如果根窗口调整尺寸,框架也会随之改变。
3.sticky属性需要列表框的上下左右都与闭合的网格连起来。
sticky=W+E+N+S
W,E,N,S 是数字常量,因此它们可以以任意顺序添加进去。
4.frame.columnconfigure(1,weight=1)列
frame.rowconfigure(0,weight=1)行
第一列扩展到右边
第0行单独一行向下扩展
滚动条:
1.为了把这个滚动条关联到文本部件,可以设置文本部件的yscroll-command属性来设置滚动条。
2.滚动条的command属性也可以被设置到text.yview
3.def _init_(self,master):
scrollbar=Scrollbar(master)
scrollbar.pack(side=RIGHT,fill=Y)
text=Text(master,yscrollcommand=scrollbar.set)
text.pack(side=LEFT,fill=BOTH)
text.insert(END,'word'*1000)
scrollbar.config(command=text.yview)
4.pack布局,fill属性用来指定文本区域可以使用x轴和y轴的所有空闲区域。
对话框:
1.import tkinter.messagebox as mb
mb.showinfo('标题','内容')
2.showwarning函数和showerror函数功能类似,只是有不同的窗口符号罢了。
3.其他的对话框可以在tkinter.colorchooser和tkinter.filedialog包里找到。
4.def _init_(self,master):
b=Button(master,text='Press Me',command=self.info).pack()
def info(self)
mb.showinfo('Information','......')
root=Tk()
app=App(root)
root.mainloop()
颜色选择器:
1.颜色选择器会返回独立的RGB组件的颜色。
2.import tkinter.colorchooser as cc
class App:
def _init_(self,master):
b=Button(master,text='Color..',command=self.ask_color).pack()
def ask_color(self):
(rgb,hx)=cc.askcolor()
print("rgb="+str(rgb)+"hx="+hx)
root=Tk()
app=App(root)
root.mainloop()
文件选择器:tkinter.filedialog
菜单:
1.第一步就是创建根菜单,这是一个包含了所以菜单的独立对象。
menubar=Menu(root)
2.需要先创建Menu实例,然后把一个命令加进去(这里是退出命令),最后把文件菜单添加到根菜单里:
filemenu=Menu(menubar,tearoff=0)
filemenu.add_command(label='Quit',command=exit)
menubar.add_cascade(label='File',menu=filemenu)
3.为了使菜单能共同出现在窗口上,需要:master.config(menu=menubar)
画布:
1.画布与窗口控件一样,可以直接添加到窗口中。
2.from tkinter import *
class App:
def _init_(self,master):
canvas=Canvas(master,width=400,height=200)
canvas.pack()
canvas.create_rectangle(20,20,300,100,fill='blue')
canvas.creat_oval(30,50,290,190,fill='#ff2277')
root=Tk()
app=App(root)
root.mainloop()
3.坐标的起始处是窗口的左上角,而且坐标的单位是像素。
!!!pygame库!!!
1.pygame库是python中一个很有用库。轻松地画图。可以在相同的速度下控制画图。可以用鼠标和键盘来控制游戏。
2.Python2安装包里才有pygame.
3.小游戏:
import pygame
pygame.init()
screen=pygame.display.set_mode((200,200))
创建新窗口,
screen.fill((255,255,255))白色填充
pygame.display.set_caption('Hello Pygame')
ball=pygame.image.load('raspberry.jpg').convert()
函数convert()提高图片绘制的速度
screen.blit(ball,(100,100))
blit命令画一张图
pygame.display.update()
更新显示信息,这样,就能看到图片了。