本帖最后由 45gfg9 于 2020-3-20 09:40 编辑
Prev: Python3Ⅲ:函数 & 模块
Next: Python3Ⅴ:更多类型
索引贴
答案帖
Prev: Python3Ⅲ:函数 & 模块
Next: Python3Ⅴ:更多类型
1 异常
1.1 异常(一)
你之前已经见过异常 了。如果你的代码出事,例如运行不正确的代码或处理不正确的输入时,就会产生异常,程序立即停止。
下面的代码通过尝试计算7 / 0来产生一个ZeroDivisionError。
```py
num1 = 7
num2 = 0
print(num1/num2)
```
输出:
```py
>>>
ZeroDivisionError: division by zero
>>>
```
Part题:
异常是什么?
A. 变量
B. 程序出错时产生的事件
C. 函数
1.2 异常(二)
由于不同的出错原因,会产生不同的异常。
常见的异常有:
ImportError:导入失败
IndexError:访问列表时索引越界
NameError:使用了未知的变量名
SyntaxError:代码不能被正确解析
TypeError:调用函数时传递了不恰当类型的值
ValueError:调用函数时传递了恰当类型但有不恰当的值的值
Part题:
下面代码会跑出什么异常?
```py
print("7" + 4)
```
A. ValueError
B. TypeError
C. ZeroDivisionError
2 异常处理
2.1 异常处理(一)
若要处理异常,或在发生异常时执行特定代码,你可以用try/except语句。
try语句块包含着可能会抛出某种异常的代码。如果那种异常发生了,try代码块停止执行,转而执行except代码块。如果异常没有发生,那么except代码块不会运行。
举例:
```py
try:
num1 = 7
num2 = 0
print (num1 / num2)
print("Done calculation")
except ZeroDivisionError:
print("An error occurred")
print("due to zero division")
```
结果:
```py
>>>
An error occurred
due to zero division
>>>
```
Part题:
下面代码的输出是?
```py
try:
variable = 10
print (10 / 2)
except ZeroDivisionError:
print("Error")
print("Finished")
```
A.
```
Error
Finished
```
B.
```
5.0
```
C.
```
5.0
Finished
```
2.2 异常处理(二)
一个try语句可以有几个except语句来处理不同的异常。
一个except语句也可以处理多种异常,通过将异常列表写进括号内。
```py
try:
variable = 10
print(variable + "hello")
print(variable / 2)
except ZeroDivisionError:
print("Divided by zero")
except (ValueError, TypeError):
print("Error occurred")
```
结果:
```py
>>>
Error occurred
>>>
```
Part题:
下面代码的输出是?
```py
try:
meaning = 42
print(meaning / 0)
print("the meaning of life")
except (ValueError, TypeError):
print("ValueError or TypeError occurred")
except ZeroDivisionError:
print("Divided by zero")
```
A.
```
Divided by zero
ValueError or TypeError occurred
```
B.
```
ValueError or TypeError occurred
```
C.
```
Divided by zero
```
2.3 异常处理(三)
一个不标注异常类型的except语句会处理所有异常。应该少用这种语法,因为有时这会捕获未预料到的异常并掩盖出现的错误。
举例:
```py
try:
word = "spam"
print(word / 0)
except:
print("An error occurred")
```
输出:
```py
>>>
An error occurred
>>>
```
Part题:
填空以处理所有可能的异常。
```py
____
num1 = input(":")
num2 = input(":")
print(float(num1)/float(num2))
_______
print("Invalid input")
```
3 finally
3.1 finally(一)
如果要保证某些代码不管有没有异常都要运行,可以使用finally语句。finally语句置于try/except语句的最后。finally代码块会在try代码块或except代码块执行后执行。
```py
try:
print("Hello")
print(1 / 0)
except ZeroDivisionError:
print("Divided by zero")
finally:
print("This code will run no matter what")
```
输出:
```py
>>>
Hello
Divided by zero
This code will run no matter what
>>>
```
Part题:
下面代码的输出是?
```py
try:
print(1)
except:
print(2)
finally:
print(3)
```
A.
```
3
```
B.
```
1
3
```
C.
```
1
2
3
```
D.
```
1
```
3.2 finally(二)
即使之前有一个未被捕获的异常发生,finally代码块也会运行。
```py
try:
print(1)
print(10 / 0)
except ZeroDivisionError:
print(unknown_var)
finally:
print("This is executed last")
```
结果
```py
>>>
1
This is executed last
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
NameError: name 'unknown_var' is not defined
>>>
```
Part题:
用选项填空,组成一个完整的try/except/finally块。
```py
______
print(1)
______
print(2)
______
print(42)
```
`try: finally: except:`
4 抛出异常
4.1 抛出异常(一)
用raise语句抛出异常。
```py
print(1)
raise ValueError
print(2)
```
输出
```py
>>>
1
ValueError
>>>
```
Part题:
下面的代码会产生什么错误?
```py
try:
print(1 / 0)
except ZeroDivisionError:
raise ValueError
```
A. 没有
B. ValueError
C. ZeroDivisionError
D. ZeroDivisionError和ValueError
4.2 抛出异常(二)
异常可以带着一些描述信息被抛出。例
```py
name = "123"
raise NameError("Invalid name!")
```
输出
```py
>>>
NameError: Invalid name!
>>>
```
Part题:
填空,如果输入是负数,就抛出一个ValueError异常。
```py
num = input(":")
if float(num) _ 0:
_____ ValueError("Negative!")
```
4.3 抛出异常(三)
在except块中,可以不加参数的使用raise语句来重抛出任意它捕获的异常。
举例:
```py
try:
num = 5 / 0
except:
print("An error occurred")
raise
```
结果:
```py
>>>
An error occurred
ZeroDivisionError: division by zero
>>>
```
Part题:
在except块之外能使用raise语句么?
5 断言
5.1 断言(一)
断言 是一种合理性检查,你可以在测试完程序后启用或关闭。
先测试一个表达式,如果结果为假,就抛出异常。
断言用assert语句来执行。
```py
print(1)
assert 2 + 2 == 4
print(2)
assert 1 + 1 == 3
print(3)
```
结果:
```py
>>>
1
2
AssertionError
>>>
```
Part题:
下面代码输出的最大数是?
```py
print(0)
assert "h" != "w"
print(1)
assert False
print(2)
assert True
print(3)
```
5.2 断言(二)
assert可以有第二个参数,当断言失败时作为实参传递给AssertionError。
```py
temp = -10
assert (temp >= 0), "Colder than absolute zero!"
```
输出
```py
>>>
AssertionError: Colder than absolute zero!
>>>
```
Part题:
填空定义一个有一个参数的函数。断言这个参数必须是正数。
```py
___ my_func(x):
______ x > 0, "Error!"
print(x)
```
6 打开文件
6.1 打开文件(一)
你可以用Python读写文件内容。
文本文件是最容易操作的。但在编辑文件之前,我们必须先用open函数打开一个文件。
```py
myfile = open("filename.txt")
```
Part题:
哪个函数用来访问文件?
6.2 打开文件(二)
你可以在open函数的第二个参数中指定打开文件的模式。
传入"r"代表将文件以读取方式打开。这是默认值。
传入"w"代表将文件以写入模式打开,这会覆写文件。
传入"a"代表追加模式,在文件末尾加入新内容。
模式后加"b"将文件以二进制模式打开,用来操作非文本文件(例如图像或音频文件)。
举例:
```py
# 写模式
open("filename.txt", "w")
# 读模式
open("filename.txt", "r")
open("filename.txt")
# 二进制写模式
open("filename.txt", "wb")
```
Part题:
用选项填空,以二进制读模式打开"test.bin"文件。
```py
file = open(______, ______)
```
`"w" "r" "b" "rb" "test.bin" "test.txt"`
6.3 打开文件(三)
打开并操作文件后,你应该记得关闭它。
用文件对象的close方法这么做。
```py
file = open("filename.txt", "w")
# do stuff to the file
file.close()
```
Part题:
如何关闭文件对象text_file?
A. text_file.close()
B. close(text_file)
C. close("text_file")
7 读取文件
7.1 读取文件(一)
以读模式打开的文件的内容可以用read方法读取。
```py
file = open("filename.txt", "r")
cont = file.read()
print(cont)
file.close()
```
Part题:
重排下列代码,打开文件,读取并输出文件内容,之后关闭文件。
```py
1. file = open("test.txt")
2. cont = file.read()
3. file.close()
4. print(cont)
```
7.2 读取文件(二)
若要定量读取文件,你可以给read方法提供一个数作为参数。这会决定要读取的字节数。
你可以对同一个文件对象调用很多次read来逐字节读取文件。不加参数时,read返回所有剩余的文件内容。
```py
file = open("filename.txt", "r")
print(file.read(16))
print(file.read(4))
print(file.read(4))
print(file.read())
file.close()
```
Part题:
如果每个字符为一字节,下面的代码每一行会输出几个字符?
```py
file = open("filename.txt", "r")
for i in range(21):
print(file.read(4))
file.close()
```
7.3 读取文件(三)
如果所有的文件内容都读取完了,任何继续尝试从文件读取的行为会返回空字符串,因为你尝试从文件末读内容。
```py
file = open("filename.txt", "r")
file.read()
print("Re-reading")
print(file.read())
print("Finished")
file.close()
```
结果:
```py
>>>
Re-reading
Finished
>>>
```
Part题:
填空打开文件,读取其内容并输出内容长度。
```py
file = ____ ("filename.txt", "r")
str = file.____()
print(len(str))
file.close()
```
7.4 读取文件(四)
若要读取文件的每一行,可以用readlines方法返回一个列表,列表元素是文件的每一行内容。
举例:
```py
file = open("filename.txt", "r")
print(file.readlines())
file.close()
```
结果:
```
>>>
['Line 1 text \n', 'Line 2 text \n', 'Line 3 text']
>>>
```
你也可以用一个for循环迭代文件每行的内容。
```py
file = open("filename.txt", "r")
for line in file:
print(line)
file.close()
```
结果:
```py
>>>
Line 1 text
Line 2 text
Line 3 text
>>>
```
Part题:
如果file.txt文件有7行,那么下面的表达式返回什么?
```py
len(open("test.txt").readlines())
```
8 写入文件
8.1 写入文件(一)
用write方法可以将一个字符串写入文件。
例:
```py
file = open("newfile.txt", "w")
file.write("This has been written to a file")
file.close()
file = open("newfile.txt", "r")
print(file.read())
file.close()
```
结果:
```py
>>>
This has been written to a file
>>>
```
Part题:
哪一行会将"Hello world!"写入文件?
A. write(file, "Hello world!")
B. file.write("Hello world!")
C. write("Hello world!", file)
8.2 写入文件(二)
当文件以写模式打开时,现有文件的内容会被删除。
```py
file = open("newfile.txt", "r")
print("Reading initial contents")
print(file.read())
print("Finished")
file.close()
file = open("newfile.txt", "w")
file.write("Some new text")
file.close()
file = open("newfile.txt", "r")
print("Reading new contents")
print(file.read())
print("Finished")
file.close()
```
输出
```py
>>>
Reading initial contents
some initial text
Finished
Reading new contents
Some new text
Finished
>>>
```
Part题:
如果将一个文件以读模式打开后立即关闭会怎么样?
A. 文件被写入一个空行
B. 文件内容被删除
C. 无事发生
8.3 写入文件(三)
write方法调用成功时返回实际写入的字节数。
```py
msg = "Hello world!"
file = open("newfile.txt", "w")
amount_written = file.write(msg)
print(amount_written)
file.close()
```
输出:
```py
>>>
12
>>>
```
Part题:
如果一次文件写入操作成功,下面哪个语句会计算为真?
A. file.write(msg) == True
B. file.write(msg) == msg
C. file.write(msg) == len(msg)
9 运用文件
9.1 运用文件(一)
使用文件后永远关闭文件以防止资源浪费是好习惯。一种方法是用try和finally。
```py
try:
f = open("filename.txt")
print(f.read())
finally:
f.close()
```
Part题:
下面代码中会调用close()方法吗?
```py
try:
f = open("filename.txt")
print(f.read())
print(1 / 0)
finally:
f.close()
```
9.2 运用文件(二)
另一种方法使用with语句。这会创建一个临时变量(通常叫f),只在with语句块内能访问。
```py
with open("filename.txt") as f:
print(f.read())
```
Part题:
填空创建一个有效的with语句块,并读取文件内容。
```py
____ open("test.txt") __ f:
print(f.____())
```
期末考试
1. 下面代码不会输出哪个数字?
```py
try:
print(1)
print(20 / 0)
print(2)
except ZeroDivisionError:
print(3)
finally:
print(4)
```
A. 2
B. 3
C. 4
2. 将文件以二进制读模式打开。
```py
open("test.txt", "w_")
```
3. 填空尝试打开并读取文件。若有异常产生,输出错误信息。
```py
try:
____ open("test.txt") as _:
print(f.read())
_______
print("Error")
```
4. 下面代码输出的最大数是?
```py
try:
print(1)
assert 2 + 2 == 5
except AssertionError:
print(3)
except:
print(4)
```
Prev: Python3Ⅲ:函数 & 模块
Next: Python3Ⅴ:更多类型
2021.12 数据,可能有更多内容
索引贴
答案帖
Prev: Python3Ⅲ:函数 & 模块
Next: Python3Ⅴ:更多类型
1 异常
1.1 异常(一)
你之前已经见过
下面的代码通过尝试计算7 / 0来产生一个ZeroDivisionError。
```py
num1 = 7
num2 = 0
print(num1/num2)
```
输出:
```py
>>>
ZeroDivisionError: division by zero
>>>
```
Part题:
异常是什么?
A. 变量
B. 程序出错时产生的事件
C. 函数
1.2 异常(二)
由于不同的出错原因,会产生不同的异常。
常见的异常有:
ImportError:导入失败
IndexError:访问列表时索引越界
NameError:使用了未知的变量名
SyntaxError:代码不能被正确解析
TypeError:调用函数时传递了不恰当类型的值
ValueError:调用函数时传递了恰当类型但有不恰当的值的值
Python还有一些内置异常,例如ZeroDivisionError和OSError。第三方库也常常定义自己的异常。
Part题:
下面代码会跑出什么异常?
```py
print("7" + 4)
```
A. ValueError
B. TypeError
C. ZeroDivisionError
2 异常处理
2.1 异常处理(一)
若要处理异常,或在发生异常时执行特定代码,你可以用try/except语句。
try语句块包含着可能会抛出某种异常的代码。如果那种异常发生了,try代码块停止执行,转而执行except代码块。如果异常没有发生,那么except代码块不会运行。
举例:
```py
try:
num1 = 7
num2 = 0
print (num1 / num2)
print("Done calculation")
except ZeroDivisionError:
print("An error occurred")
print("due to zero division")
```
结果:
```py
>>>
An error occurred
due to zero division
>>>
```
上面的代码中,except语句标明了要处理的异常类型(本例中是ZeroDivisionError)。
Part题:
下面代码的输出是?
```py
try:
variable = 10
print (10 / 2)
except ZeroDivisionError:
print("Error")
print("Finished")
```
A.
```
Error
Finished
```
B.
```
5.0
```
C.
```
5.0
Finished
```
2.2 异常处理(二)
一个try语句可以有几个except语句来处理不同的异常。
一个except语句也可以处理多种异常,通过将异常列表写进括号内。
```py
try:
variable = 10
print(variable + "hello")
print(variable / 2)
except ZeroDivisionError:
print("Divided by zero")
except (ValueError, TypeError):
print("Error occurred")
```
结果:
```py
>>>
Error occurred
>>>
```
Part题:
下面代码的输出是?
```py
try:
meaning = 42
print(meaning / 0)
print("the meaning of life")
except (ValueError, TypeError):
print("ValueError or TypeError occurred")
except ZeroDivisionError:
print("Divided by zero")
```
A.
```
Divided by zero
ValueError or TypeError occurred
```
B.
```
ValueError or TypeError occurred
```
C.
```
Divided by zero
```
2.3 异常处理(三)
一个不标注异常类型的except语句会处理所有异常。应该少用这种语法,因为有时这会捕获未预料到的异常并掩盖出现的错误。
举例:
```py
try:
word = "spam"
print(word / 0)
except:
print("An error occurred")
```
输出:
```py
>>>
An error occurred
>>>
```
异常处理在与用户输入打交道时往往会很有用。
Part题:
填空以处理所有可能的异常。
```py
____
num1 = input(":")
num2 = input(":")
print(float(num1)/float(num2))
_______
print("Invalid input")
```
3 finally
3.1 finally(一)
如果要保证某些代码不管有没有异常都要运行,可以使用finally语句。finally语句置于try/except语句的最后。finally代码块会在try代码块或except代码块执行后执行。
```py
try:
print("Hello")
print(1 / 0)
except ZeroDivisionError:
print("Divided by zero")
finally:
print("This code will run no matter what")
```
输出:
```py
>>>
Hello
Divided by zero
This code will run no matter what
>>>
```
Part题:
下面代码的输出是?
```py
try:
print(1)
except:
print(2)
finally:
print(3)
```
A.
```
3
```
B.
```
1
3
```
C.
```
1
2
3
```
D.
```
1
```
3.2 finally(二)
即使之前有一个未被捕获的异常发生,finally代码块也会运行。
```py
try:
print(1)
print(10 / 0)
except ZeroDivisionError:
print(unknown_var)
finally:
print("This is executed last")
```
结果
```py
>>>
1
This is executed last
ZeroDivisionError: division by zero
During handling of the above exception, another exception occurred:
NameError: name 'unknown_var' is not defined
>>>
```
Part题:
用选项填空,组成一个完整的try/except/finally块。
```py
______
print(1)
______
print(2)
______
print(42)
```
`try: finally: except:`
4 抛出异常
4.1 抛出异常(一)
用raise语句抛出异常。
```py
print(1)
raise ValueError
print(2)
```
输出
```py
>>>
1
ValueError
>>>
```
你必须指出要抛出的异常类型。
Part题:
下面的代码会产生什么错误?
```py
try:
print(1 / 0)
except ZeroDivisionError:
raise ValueError
```
A. 没有
B. ValueError
C. ZeroDivisionError
D. ZeroDivisionError和ValueError
4.2 抛出异常(二)
异常可以带着一些描述信息被抛出。例
```py
name = "123"
raise NameError("Invalid name!")
```
输出
```py
>>>
NameError: Invalid name!
>>>
```
Part题:
填空,如果输入是负数,就抛出一个ValueError异常。
```py
num = input(":")
if float(num) _ 0:
_____ ValueError("Negative!")
```
4.3 抛出异常(三)
在except块中,可以不加参数的使用raise语句来重抛出任意它捕获的异常。
举例:
```py
try:
num = 5 / 0
except:
print("An error occurred")
raise
```
结果:
```py
>>>
An error occurred
ZeroDivisionError: division by zero
>>>
```
Part题:
在except块之外能使用raise语句么?
5 断言
5.1 断言(一)
先测试一个表达式,如果结果为假,就抛出异常。
断言用assert语句来执行。
```py
print(1)
assert 2 + 2 == 4
print(2)
assert 1 + 1 == 3
print(3)
```
结果:
```py
>>>
1
2
AssertionError
>>>
```
程序员常在函数起始放置断言检验输入是否有效,并在调用函数后检测输出是否有效。
Part题:
下面代码输出的最大数是?
```py
print(0)
assert "h" != "w"
print(1)
assert False
print(2)
assert True
print(3)
```
5.2 断言(二)
assert可以有第二个参数,当断言失败时作为实参传递给AssertionError。
```py
temp = -10
assert (temp >= 0), "Colder than absolute zero!"
```
输出
```py
>>>
AssertionError: Colder than absolute zero!
>>>
```
AssertionError与任何其他异常一样可以用try-except语句捕获,但如果不处理的话,它会中止程序执行。
Part题:
填空定义一个有一个参数的函数。断言这个参数必须是正数。
```py
___ my_func(x):
______ x > 0, "Error!"
print(x)
```
6 打开文件
6.1 打开文件(一)
你可以用Python读写文件内容。
文本文件是最容易操作的。但在编辑文件之前,我们必须先用open函数打开一个文件。
```py
myfile = open("filename.txt")
```
open函数的参数是文件的路径。如果文件在当前程序路径下,你可以只写文件名。
Part题:
哪个函数用来访问文件?
6.2 打开文件(二)
你可以在open函数的第二个参数中指定打开文件的模式。
传入"r"代表将文件以读取方式打开。这是默认值。
传入"w"代表将文件以写入模式打开,这会覆写文件。
传入"a"代表追加模式,在文件末尾加入新内容。
模式后加"b"将文件以二进制模式打开,用来操作非文本文件(例如图像或音频文件)。
举例:
```py
# 写模式
open("filename.txt", "w")
# 读模式
open("filename.txt", "r")
open("filename.txt")
# 二进制写模式
open("filename.txt", "wb")
```
在上面的模式中用+号会赋予对文件额外的操作权限。例如,r+将文件以读写模式打开。
Part题:
用选项填空,以二进制读模式打开"test.bin"文件。
```py
file = open(______, ______)
```
`"w" "r" "b" "rb" "test.bin" "test.txt"`
6.3 打开文件(三)
打开并操作文件后,你应该记得关闭它。
用文件对象的close方法这么做。
```py
file = open("filename.txt", "w")
# do stuff to the file
file.close()
```
之后会讲如何读写文件内容。
Part题:
如何关闭文件对象text_file?
A. text_file.close()
B. close(text_file)
C. close("text_file")
7 读取文件
7.1 读取文件(一)
以读模式打开的文件的内容可以用read方法读取。
```py
file = open("filename.txt", "r")
cont = file.read()
print(cont)
file.close()
```
这会输出"filename.txt"文件的内容。
Part题:
重排下列代码,打开文件,读取并输出文件内容,之后关闭文件。
```py
1. file = open("test.txt")
2. cont = file.read()
3. file.close()
4. print(cont)
```
7.2 读取文件(二)
若要定量读取文件,你可以给read方法提供一个数作为参数。这会决定要读取的字节数。
你可以对同一个文件对象调用很多次read来逐字节读取文件。不加参数时,read返回所有剩余的文件内容。
```py
file = open("filename.txt", "r")
print(file.read(16))
print(file.read(4))
print(file.read(4))
print(file.read())
file.close()
```
传递负数参数与不传递参数一样,返回剩余的所有内容。
Part题:
如果每个字符为一字节,下面的代码每一行会输出几个字符?
```py
file = open("filename.txt", "r")
for i in range(21):
print(file.read(4))
file.close()
```
7.3 读取文件(三)
如果所有的文件内容都读取完了,任何继续尝试从文件读取的行为会返回空字符串,因为你尝试从文件末读内容。
```py
file = open("filename.txt", "r")
file.read()
print("Re-reading")
print(file.read())
print("Finished")
file.close()
```
结果:
```py
>>>
Re-reading
Finished
>>>
```
与不传参一样,负参数返回所有内容。
Part题:
填空打开文件,读取其内容并输出内容长度。
```py
file = ____ ("filename.txt", "r")
str = file.____()
print(len(str))
file.close()
```
7.4 读取文件(四)
若要读取文件的每一行,可以用readlines方法返回一个列表,列表元素是文件的每一行内容。
举例:
```py
file = open("filename.txt", "r")
print(file.readlines())
file.close()
```
结果:
```
>>>
['Line 1 text \n', 'Line 2 text \n', 'Line 3 text']
>>>
```
你也可以用一个for循环迭代文件每行的内容。
```py
file = open("filename.txt", "r")
for line in file:
print(line)
file.close()
```
结果:
```py
>>>
Line 1 text
Line 2 text
Line 3 text
>>>
```
在输出中,每一行又被一个空行所隔开,因为print函数在输出后又会添加一个换行。
Part题:
如果file.txt文件有7行,那么下面的表达式返回什么?
```py
len(open("test.txt").readlines())
```
8 写入文件
8.1 写入文件(一)
用write方法可以将一个字符串写入文件。
例:
```py
file = open("newfile.txt", "w")
file.write("This has been written to a file")
file.close()
file = open("newfile.txt", "r")
print(file.read())
file.close()
```
结果:
```py
>>>
This has been written to a file
>>>
```
如果文件不存在,"w"模式会创建它。
Part题:
哪一行会将"Hello world!"写入文件?
A. write(file, "Hello world!")
B. file.write("Hello world!")
C. write("Hello world!", file)
8.2 写入文件(二)
当文件以写模式打开时,现有文件的内容会被删除。
```py
file = open("newfile.txt", "r")
print("Reading initial contents")
print(file.read())
print("Finished")
file.close()
file = open("newfile.txt", "w")
file.write("Some new text")
file.close()
file = open("newfile.txt", "r")
print("Reading new contents")
print(file.read())
print("Finished")
file.close()
```
输出
```py
>>>
Reading initial contents
some initial text
Finished
Reading new contents
Some new text
Finished
>>>
```
如你所见,文件内容被覆写了。
Part题:
如果将一个文件以读模式打开后立即关闭会怎么样?
A. 文件被写入一个空行
B. 文件内容被删除
C. 无事发生
8.3 写入文件(三)
write方法调用成功时返回实际写入的字节数。
```py
msg = "Hello world!"
file = open("newfile.txt", "w")
amount_written = file.write(msg)
print(amount_written)
file.close()
```
输出:
```py
>>>
12
>>>
```
若要写入非字符串对象,你需要先将其转换为字符串。
Part题:
如果一次文件写入操作成功,下面哪个语句会计算为真?
A. file.write(msg) == True
B. file.write(msg) == msg
C. file.write(msg) == len(msg)
9 运用文件
9.1 运用文件(一)
使用文件后永远关闭文件以防止资源浪费是好习惯。一种方法是用try和finally。
```py
try:
f = open("filename.txt")
print(f.read())
finally:
f.close()
```
这会保证即使有错误发生,文件也会被关闭。
Part题:
下面代码中会调用close()方法吗?
```py
try:
f = open("filename.txt")
print(f.read())
print(1 / 0)
finally:
f.close()
```
9.2 运用文件(二)
另一种方法使用with语句。这会创建一个临时变量(通常叫f),只在with语句块内能访问。
```py
with open("filename.txt") as f:
print(f.read())
```
在with块执行结束后,即使出错,文件也会被自动关闭。
Part题:
填空创建一个有效的with语句块,并读取文件内容。
```py
____ open("test.txt") __ f:
print(f.____())
```
期末考试
1. 下面代码不会输出哪个数字?
```py
try:
print(1)
print(20 / 0)
print(2)
except ZeroDivisionError:
print(3)
finally:
print(4)
```
A. 2
B. 3
C. 4
2. 将文件以二进制读模式打开。
```py
open("test.txt", "w_")
```
3. 填空尝试打开并读取文件。若有异常产生,输出错误信息。
```py
try:
____ open("test.txt") as _:
print(f.read())
_______
print("Error")
```
4. 下面代码输出的最大数是?
```py
try:
print(1)
assert 2 + 2 == 5
except AssertionError:
print(3)
except:
print(4)
```
这还是mcbbs嘛 编程都有昂
谢谢大佬指点
唉看到except就想起了一段不好的回忆
有一天我从网上下载了一个库
结果一调用报错了……
except Exception,err:
SyntaxError: invalid syntax
附加一堆路径和During handling of the above exception, another exception occurred:
我寻思着我也没有干出这种事啊……
结果按pycharm给的路径一查……坏大了……
这个作者把所有的except Exception as err:都写成了except Exception,err:
我翻源码和路径改了一下午才好了
有一天我从网上下载了一个库
结果一调用报错了……
except Exception,err:
SyntaxError: invalid syntax
附加一堆路径和During handling of the above exception, another exception occurred:
我寻思着我也没有干出这种事啊……
结果按pycharm给的路径一查……坏大了……
这个作者把所有的except Exception as err:都写成了except Exception,err:
我翻源码和路径改了一下午才好了