本文代码是在jupyter中实现的,仅为了自我督促学习python之用。
10-6 加法运算:提示用户提供数值输入时,常出现的一个问题是,用户提供的是文本而不是数字。在这种情况下,当你尝试将输入转换为整数时,将引发TypeError 异常。编写一个程序,提示用户输入两个数字,再将它们相加并打印结果。在用户输入的任何一个值不是数字时都捕获 TypeError 异常,并打印一条友好的错误消息。对你编写的程序进行测试:先输入两个数字,再输入一些文本而不是数字。
代码:
print("Give me two numbers, and I'll add them.")
first_number = input("\nFirst number: ")
second_number = input("Second number: ")
try:
answer = int(first_number) + int(second_number)
print(answer)
except ValueError:
print("Sorry what you entered is not a number.")
运行结果:
Give me two numbers, and I'll add them.
First number: 2
Second number: 5
7
10-7 加法计算器:将你为完成练习 10-6 而编写的代码放在一个 while 循环中,让用户犯错(输入的是文本而不是数字)后能够继续输入数字。
代码:
print("Give me two numbers, and I'll add them.")
print("Enter 'q' to quit.")
while True:
first_number = input("\nFirst number: ")
if first_number == 'q':
break
second_number = input("Second number: ")
if first_number == 'q':
break
try:
answer = int(first_number) + int(second_number)
except ValueError:
print("Sorry what you entered is not a number.")
else:
print(answer)
运行结果:
Give me two numbers, and I'll add them.
Enter 'q' to quit.
First number: 2
Second number: 4
6
First number: 3
Second number: a
Sorry what you entered is not a number.
First number: q
10-8 猫和狗:创建两个文件 cats.txt和 dogs.txt,在第一个文件中至少存储三只猫的名字,在第二个文件中至少存储三条狗的名字。编写一个程序,尝试读取这些文件,并将其内容打印到屏幕上。将这些代码放在一个 try-except 代码块中,以便在文件不存在时捕获 FileNotFound 错误,并打印一条友好的消息。将其中一个文件移到另一个地方,并确认 except 代码块中的代码将正确地执行。
代码:
try:
with open('cats.txt') as file_object: # cats.txt文件已经添加进运行环境
for line in file_object:
print(line.rstrip())
with open('dogs.txt') as file_object: # dogs.txt文件不在运行环境
lines = file_object.readlines()
for line in lines:
print(lines.rstrip())
except FileNotFoundError:
print("The file does not exist!")
运行结果:
xiao hua
xiao hei
xiao hu
The file does not exist!
10-9 沉默的猫和狗:修改你在练习 10-8中编写的 except 代码块,让程序在文件不存在时一言不发。
代码:
try:
with open('cats.txt') as file_object: # cats.txt文件不在运行环境
for line in file_object:
print(line.rstrip())
with open('dogs.txt') as file_object: # dogs.txt文件不在运行环境
lines = file_object.readlines()
for line in lines:
print(lines.rstrip())
except FileNotFoundError:
print(" ")
运行结果:
10-10 常见单词:访问项目 Gutenberg(http://gutenberg.org/),并找一些你想分析的图书。下载这些作品的文本文件或将浏览器中的原始文本复制到文本文件中。你可以使用方法 count() 来确定特定的单词或短语在字符串中出现了多少次。例如,下面的代码计算 ‘row’ 在一个字符串中出现了多少次:
line = “Row, row, row your boat”
line.count(‘row’)
2line.lower().count(‘row’)
3
请注意,通过使用 lower() 将字符串转换为小写,可捕捉要查找的单词出现的所有次数,而不管其大小写格式如何。编写一个程序,它读取你在项目 Gutenberg 中获取的文件,并计算单词 ‘the’ 在 每个文件中分别出现了多少次。
代码:
filename = 'alice.txt'
try:
with open(filename) as f_obj:
contents = f_obj.read().split(' ')
except FileNotFoundError:
print("Sorry, the file " + filename + " does not exist.")
else:
num_words = contents.count('wonder')
print("The number of occurrences of 'wonder' in" + filename + " is "+ str(num_words) + "." )
运行结果:
The number of occurrences of 'wonder' inalice.txt is 15.