python慕课版电子版教材,python慕课版课后题答案

本文详细介绍了Python中的文件操作、列表、元组、字典的概念和使用方法,以及如何进行GUI编程,特别是使用tkinter创建交互式界面的基础知识。
摘要由CSDN通过智能技术生成

大家好,小编为大家解答python慕课版董付国课后题答案的问题。很多人还不知道python慕课版课后题答案郭炜,现在让我们一起来看看吧!

文件

文件的概念和形式

文件是数据抽象和集合。

文件是存储在辅助存储器上的数据序列,是数据存储的一种形式c加加和python哪个值得学

文件展现有两种形态:文本形式和二进制文件。

本质上,所有的文件都是二进制形式存储。

文本形式:由单一特定编码组成的文件(如UTF-8编码),也被看成存储着的长字符串,.txt、.py文件等

二进制形式:直接由比特01组成,无统一的字符编码,适用于.png文件、.avi文件

文件的操作
文件的打开和关闭

a = open( , )       <变量名> = open(<文件名>,<打开模式>)

a.close()

文件的关闭(python可能会缓冲我写入的数据,所以使用完文件后就及时关闭文件)

1、使用try/finally语句,在finally语句中调用close

#打开文件
try:
    #将数据写入文件
finally:
    file.close()

2、with语句(专门设计来关闭文件)

with open("somefile.txt") as somefile:
    do_something(somefile)

with语句让我打开文件并将其赋值给一个变量,然后再对文件写入数据,到达该语句末端时,将会自动关闭文件。


文件的读取和写入

seek():指定指针到内容的某个特定位置。

tell():返回当前位于文件的什么位置。

列表

1、list():创建或者转换成列表;在使用 list() 函数创建列表时,一定要注意双括号

可以使用 list() 函数将字符串、元组、字典和集合等其他类似对象转换为列表

2、下标索引访问的是元素

3、使用for循环遍历列表中的项目

4、使用 in 关键字检查列表中是否存在指定项时,如果存在,则返回 True ;反之,则返回 False

5、更改列表值

num_list = [0,3,1,6]

num_list[2] = 6

print(num_list)
[0,3,6,6]

6、列表之间可以使用+和*实现元组的连接和复制,意味着生成应该新的列表

7、嵌套列表:使用嵌套列表即在列表里面创建其他列表

当嵌套列表后,列表中的元素数量为内含的列表个数,如下代码的len(z)=2

x = [1,2,3]
y = ['haha']
z = [x,y]
print(z)
[[1,2,3],['haha']]

8、列表的比较

列表比较需要引入 operator 模块的 eq 方法

# 导入 operator 模块
import operator

a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a, b):", operator.eq(a, b))
print("operator.eq(b, c):", operator.eq(b, c))
operator.eq(a, b): False
operator.eq(b, c): True

9、内置函数

(1)len()函数:确定一个列表有多少元素

(2)type()函数:确定变量是什么类型(字符串、列表、元组、字典或集合)

使用 type() 确定变量类型时,会返回<class 'list'>,表明这是一个列表

(3)list()函数:转化成类型为列表

将字典转换为列表

dict1 = {'Hello': 'Python', 'name': 'pink'}
print(list(dict1))
['Hello', 'name']

字典转化列表默认转化的是字典键值

dict = {}
print(list(dict))
print(list(dict.keys()))    同上一句打印出键
print(list(dict.values()))    打出值
print(list(dict.items()))    打印出键值对

()

(4)del 函数不仅可以实现删除某个元素,还可以删除整个列表。

当我们使用 del 函数删除某列表后,再使用 print() 函数打印输出时,会报错NameError: name 'list_de' is not defined,表明该列表未被定义。

10、内置方法

(1)append()方法:用于在列表末尾添加新的对象

(2)insert()方法:用于将指定对象插入列表的指定位置

list.insert(position, element)        insert() 可以在任意位置添加元素或列表

(3)extend()方法用于在列表末尾一次性追加另一个序列中的多个(用新列表扩展原来的列表)

        list.extend(iterable)必需:任何可迭代对象(列表、集合、元组等)

(4)count() 方法用于统计某个元素在列表中出现的次数。

(5)index()方法:用于从列表中找出某个值第一个匹配项的索引位置

  当被搜索值在列表中多次出现时,仅返回首次出现的位置

(6)sort()方法用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数

list.sort(reverse=True|False, key=myFunc)        Ture是降序排列,False是升序排列

(7)copy()方法:copy() 方法用于复制列表,类似于 a[:]

(8)reverse() 方法:用于反向列表中元素

(9)删除元素 pop()、remove()、clear()

pop() 方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值

remove() 方法用于移除列表中某个值的第一个匹配项。当被删除的元素在列表中存在多个时,默认删除首次出现的那个。

clear() 方法用于清空列表,类似于 del a[:]

clear() 方法的作用是清空列表,执行结束后对其使用 print() 打印输出时,会输出 [] ,说明列表还存在,只是空列表而已。

元组

元组是有序不可更改的集合。元组使用圆括号 () 编写的

元组的创建很简单,使用圆括号 () 直接创建或者使用 tuple() 函数创建,只需要在圆括号中添加元素,并使用逗号隔开即可

当元组中只包含一个元素时,需要在元素后面添加逗号, ,否则括号会被当作运算符使用

元组是不可变的,或者也被称为恒定的。所谓元组的不可变性指的是元组所指向的内存中的内容不可变。

但是有一种解决方法:可以先将元组转换为列表,更改列表值,然后再将其转换回元组


字典

Python字典是另一种可变容器模型,可存储任意类型对象。如字符串、数字、元组等其他容器模型
因为字典是无序的所以不支持索引和切片

注意

  • key不可以重复,否则只会保留第一个;
  • value值可以重复;
  • key可以是任意的数据类型,但不能出现可变的数据类型,保证key唯一;
  • key一般形式为字符串

1、基本操作:增删查改

(1)增:字典名[new key]=new value

(2)删:del 字典名[key]

(3)查:value=字典名[key]

(4)改:字典名[key]=new value

图形交互界面

GUI交互式

python图形界面教程(tkinter)_python图形化界面-CSDN博客

图像化编程的基本步骤通常包括:

  • 导入 tkinter 模块
  • 创建 GUI 根窗体
  • 添加人机交互控件并编写相应的函数。
  • 在主事件循环中等待用户触发事件响应。
窗体控件布局
from tkinter import *
root = Tk()
root.title('我的第一个python窗体')
root.geometry('480x480')
root.mainloop()
tkinter常用控件

控件的共同属性

relief= FLAT(平的)、RAISED(凸起的)、SUNKEN(凹陷的)、GROOVE(沟槽状边缘)和 RIDGE(脊状边缘) 

控件布局

控件的布局通常有pack()grid() 和 place() 三种方法 

pack()方法:是一种简单的布局方法,如果不加参数的默认方式,将按布局语句的先后,以最小占用空间的方式自上而下地排列控件实例,并且保持控件本身的最小尺寸。

使用pack()方法可设置 fill、side 等属性参数。其中,参数fill 可取值:fill=X,fill=Y或fill=BOTH,分别表示允许控件向水平方向、垂直方向或二维伸展填充未被占用控件。参数 side 可取值:side=TOP(默认),side=LEFT,side=RIGHT,side=BOTTOM,分别表示本控件实例的布局相对于下一个控件实例的方位。


grid()方法:是基于网格的布局。先虚拟一个二维表格,再在该表格中布局控件实例。由于在虚拟表格的单元中所布局的控件实例大小不一,单元格也没有固定或均一的大小,因此其仅用于布局的定位。pack()方法与grid()方法不能混合使用。

column: 控件实例的起始列,最左边为第0列。
columnspan: 控件实例所跨越的列数,默认为1列。
ipadx,ipady: 控件实例所呈现区域内部的像素数,用来设置控件实例的大小。
padx,pady: 控件实例所占据空间像素数,用来设置实例所在单元格的大小。
row: 控件实例的起始行,最上面为第0行。
rowspan: 控件实例的起始行数,默认为1行。

place()方法:根据控件实例在父容器中的绝对或相对位置参数进行布局。其常用布局参数如下:

x,y:控件实例在根窗体中水平和垂直方向上的其实位置(单位为像素)。注意,根窗体左上角为0,0,水平向右,垂直向下为正方向。

relx,rely:控件实例在根窗体中水平和垂直方向上起始布局的相对位置。即相对于根窗体宽和高的比例位置,取值在0.0~1.0之间。

height,width:控件实例本身的高度和宽度(单位为像素)。

relheight,relwidth:控件实例相对于根窗体的高度和宽度比例,取值在0.0~1.0之间。

利用place()方法配合relx,rely和relheight,relwidth参数所得的到的界面可自适应根窗体尺寸的大小。place()方法与grid()方法可以混合使用。如下例子:利用place()方法排列消息(多行标签)。
 

知识杂记

1、【字符串】strip可以把字符串开头和末尾的空白删除,并返回删除后的结果

还可以在一个字符串参数中指定要删除的哪些字符.strip('*!'):可以删除头尾的*和!字符

>>>"**ha*ha*ha!!!***".strip('!*')

"ha*ha*ha"

2、【函数】使用 ord('a')+i 配合 range()函数 可以遍历一个连续的字符表。

3、【文件】for line in f方式获得的每行内容(在变量line中)包含换行符,所以,要通过strip()函数去掉换行符后再进行统计。这里,空行指没有字符的行。

用len(line)== 0判断是不是空行。

continue的使用

当判断line不是空行时,执行continue后不执行s += 1的语句,继续循环语句。

4、【字典】d ={}这是定义了一个字典,get()函数用于访问字典

5、【print】end=' '意思是末尾不换行,加空格

为末尾end传递一个空字符串,这样print函数不会在字符串末尾添加一个换行符,而是添加一个空字符串

6、【字符串】split与join的作用相反,用于将字符串拆分成序列。

>>>'/ha/haha/666'.split('/')

[",'ha','haha','666']

如果没有指定的分隔符,将会默认在单个或者多个连续的空白字符处拆分(空格、制表符、换行符

7、【字符串】append() 方法用于在列表中添加新的对象


疑问

1、如何打印出转义字符\n?(显示出就是在屏幕上打印\n)

在转义字符前加上一个斜杆:print("\\n")

2、print()

默认情况下,print()函数的end参数为\n,这意味着在每次调用print()函数时都会打印一个换行符。但是可以将end参数设置为其他字符,例如空格或逗号,以在每行的末尾使用不同的字符。

3、因为不同类型的不可以相加

for i in range(2):
    print(i)
#这种可以执行


for i in range(2):
    print(i+":")
#这种不可以执行呢

4、import pprint有什么作用?

pprint() 模块打印出来的数据结构更加完整,每行为一个数据结构,更加方便阅读打印输出结果。

5、end=""不换行

为什么这里仍然会换行呢?

6、当到达文件末尾时,方法read将会返回一个空字符串,但是如果文件数据中含有空字符比如说是空字符,那么不会提前循环结束吗?

def process(string):
    print("processing",string)

with open(file_name) as f:
    char = f.read(1)
    while word:
        process(char)
        char = f.read(1)

7、模块sys的三个标准流是什么,有什么作用?

8、上下文管理器是什么,有什么作用?

9、print(f.closed)的作用?

def demo_with(file_name):
    with open(file_name,'r') as in_file:
        for line in in_file:
            print(line,end='')
        print('Still in with.Is file closed?',in_file.closed)
    print('After with block.Is file closed?',in_file.closed)

print可以用来做调试。 打印出文件是否关闭的信息吧。

用于判断文件流信息是否关闭,文件操作,多数使用 with...as... 语句。

10、类和对象也就是.的区别

  • 12
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值