python3入门(GUI/Pygame)

python入门

2019年6月,被研究生学姐(划重点)diss不会python,另有门外汉说爬虫一学就会,但自己因为没有这方面的需求一直没有主动去学过,痛定思痛,决定入门python3


特点

python容易阅读、理解和编写;
python具有跨平台、无视OS的特点;
python是面向对象的;
python是面向模块编程的;
缩进(tab)是python的灵魂……


安装

下载并安装python,我的版本是3.7.3


语法

注释

# 注释内容


变量

python的变量名大小写敏感。

  1. 强制类型转换:str(...)int(...)float(...)
  2. 获取变量类型:type(varName)/isinstance(varName, str/int/float...)
  3. 全局变量:global,在函数内通过global定义的变量,修改的就是全局变量
  4. 私有变量:__varName,在类中的变量前加__,表明变量是私有的,在类外无法被访问

字符串str

'string'"string"一旦创建就不能修改

  1. 原始字符串:r'string'r"string" —— 注意原始字符串的结尾不能是\
1
2
3
4
5
6
7
8
9
10
11
str1 = 'C:\now'
str2 = r'C:\now'

print(str1)
# \n被识别为换行,结果为:
# C:
# ow

print(str2)
# 原始字符串,结果为:
# C:\now
  1. 三引号字符串:'''""" —— 用于输入长字符串,可以自动识别换行

列表list

创建

  1. 空列表:[]
  2. 非空列表:[member1, 'member2', [member3], ...]

添加元素 append/extend/insert

  1. .append(newMember):只允许传入一个元素。
  2. .extend([newMember]):允许传入一个列表,扩展原有列表。
  3. .insert(position, newMember):允许在特定位置插入一个元素。

获取元素 : 直接通过下标获取

删除元素 remove

  1. .remove(member):删除特定元素。
  2. .pop(position):不带position参数会弹出栈顶,即删除列表的最后一个元素;否则弹出特定position的元素。
  3. del

切片(slice)

[start:end],得到一个从start开始,到end-1的子列表。

1
2
3
4
5
member = [1, 2, 3, 4, 5]
member[1:3] # [2,3]
member[:3] # [1,2,3]
member[1:] # [2,3,4,5]
member[:] # [1,2,3,4,5]

元组turple

元组和列表相似,但是元组创建后就不允许进行修改。通过(member1, member2, ...)创建。


字典dict

创建

空字典:{}
非空字典:{key1 : value1, key2 : value2, ...}

使用

dictName[key]即可获取对应的value


运算符

  1. ///的区别:在python中,/采用的是真实的除法,而//沿用了地板除法,即类似java的整型除整型只能获得整型的除法。
1
2
10 / 8    # 结果为1.25,真实除法
10 // 8 # 结果为1,地板除法,取整
  1. 幂运算:**。幂运算的优先级是最高的,幂运算 > 算术运算 > 关系运算 > 逻辑运算
1
3 ** 2    # 即3^2 = 9,3的2次方

条件分支

  1. ifelifelse后加:,代码段不需要加{},但是需要缩进
1
2
3
4
5
6
if condition1:
# condition1 true
elif condition2:
# condition2 true
else:
# both false
  1. python三元操作符:result = x if condition else y
1
small = x if x < y else y
  1. 断言:assert condition,要求条件必须为真,否则抛出AssertionError异常,程序崩溃,可以用于调试代码。

循环

while循环

while后加:,代码段不需要加{},但是需要缩进

1
2
while condition1 and condition2:
# true

for循环

for ... in ...后加:,代码段不需要加{},但是需要缩进

1
2
3
gf = 'wuyingying'
for i in gf:
print(i, end = ' ')

break & continue

break:跳出循环;
continue:跳出本次循环,继续执行下一次循环。


函数

创建

1
2
3
4
def FunctionName(paramName= defaultValue):
'function doc' # 函数文档
# function body
return returnBody

调用

直接通过函数名调用,传入参数。

查看函数文档

FunctionName.__doc__help(FunctionName)


异常处理

try-except-finally

1
2
3
4
5
6
7
8
try:
# 检测代码
except ExceptionTypeName1 [as reason1]:
# reason是一个变量,是异常的原因介绍,可以通过str(reason)转为字符串后打印出来
# 异常处理代码
except (ExceptionTypeName2, ExceptionTypeName3) [as reason2]:
finally:
# 一定会执行的代码

导入模块(module)

通过import module导入。对于不熟悉的模块,可以在python shell中输入help()命令,然后输入模块名称即可查看帮助文档。

操作系统模块os

直接通过os模块来进行操作系统相关的操作,这样就可以屏蔽底层操作系统细节,只关注于代码操作。

随机模块random

1
2
3
4
import random

# 通过randint(int s, int e)生成一个 s-e 之间的随机数
randomInt = random.randint(1, 10)

列表永久存储模块(泡菜)pickle

存储:pickle.dump(list, pickle_file)
读取:pickle.load(pickle_file)

1
2
3
4
5
6
7
8
9
10
11
12
import pickle

my_list = [1, 2, 3]
pickle_file = open('my_list.pickle', 'wb')
# 存储(倒)
picle.dump(my_list, pickle_file)
# 关闭文件
pickle_file.close()

pickle_file = open('my_list.pickle', 'rb')
# 读取
new_list = pickle.load(pickle_file)

内置函数(BIF:Built-in Function)

范围数:range([start], end[, step])

返回一个从startend,每次步进step长度的范围数组。
其中start不是必须参数,默认为0;step也不是必须参数,默认为1。

判断类是否是某个类的子类:issubclass(class, classinfo)

每个类都是自身的子类,也是object类的子类


类和对象

  1. python中的类约定是大写字母开头,在类名后不需要{},但是需要:和缩进。
  2. 类的继承:语法是class Child(Parent1[, Parent2, ...]): ...支持多重继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
class ParentClassName: # 类名以大写字母开头
__name = 'wyy' # 变量前加__表明是私有变量,在类外无法被访问
param1 = ''
param2 = 0

def getName(self):
return self.__name

def __init__(self, param1, param2):
`构造函数,其中self是必需的,其他可有可无`
# body

# 类的继承
class ChildClassName(ParentClassName):
def __init__(self):
# 可以通过super()调用父类的方法
super().__init__()

def getName(self):
return `如果子类和父类方法同名,子类方法会覆盖父类方法`
```

#### 对象

创建对象:`obj = ClassName()`

---

## with语句

`with`语句是一种与**异常处理**相关的功能,适用于**对资源进行访问**的场景,**确保不管使用过程是否发生异常都执行必要的“清理”操作,释放资源**,比如`文件使用后自动关闭`、`线程中锁的自动获取与释放`。

### 语法格式

```python
# 基本语法
with context-expression [as target(s)]:
with-body

# 使用with操作文件,就相当于try-except-finally
with open(r'someFileName') as sf:
for line in sf:
print line

Tkinter GUI

Tkinterpython的官方GUI包,通过import tkinterfrom tkinter import *即可导入使用。
创建root窗口:root = tkinter.Tk()
画布:frame = tkinter.Frame(...)
描述性标签:label = tkinter.Label(...)
按钮:button = tkinter.Button(..., command = FunctionName)
单选:RadioButton
……

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import tkinter as tk

class APP:
def hi(self):
print("bat i am comming")

def __init__(self, root):
'构造函数'
# 生成Frame组件,绑定到窗口
frame = tk.Frame(root)
frame.pack(side = tk.LEFT, padx = 10, pady = 10) # 用于自动调节组件位置
# 生成Button组件,绑定到Frame,同时绑定command事件
self.hi_there = tk.Button(frame, text = "Hello World", bg = "black", fg = "white", command = self.hi)
self.hi_there.pack() # 用于自动调节组件位置
# 生成Label组件,绑定到窗口
theLable = tk.Label(frame, text="tkinter gui")
theLable.pack() # 用于自动调节组件位置

root = tk.Tk() # 生成一个Tk实例,即创建root窗口
root.title("tkinter demo") # 设置窗口标题
app = APP(root)

root.mainloop() # 窗口的主事件触发

游戏开发Pygame

import pygame

-------------本文结束感谢您的阅读-------------

本文标题:python3入门(GUI/Pygame)

文章作者:DragonBaby308

发布时间:2019年06月26日 - 19:42

最后更新:2020年01月25日 - 13:13

原始链接:http://www.dragonbaby308.com/python/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

急事可以使用右下角的DaoVoice,我绑定了微信会立即回复,否则还是推荐Valine留言喔( ఠൠఠ )ノ
0%