Python学习笔记第14天
每日一句:生活中没有理想的人,是可怜的人。
# 异常 # 报错 # 处理ZeroDivisionError # print(5/0) # 会报错 division by zero # 使用try-except代码块 处理异常 try: print(5/0) except ZeroDivisionError: print("你不能除以零!")
# 使用异常避免崩溃 print("Give me two number,and I'll divide them.") print("Enter 'q' to quit.") while True: first_number=input("\nFirst number: ") if first_number=='q': break second_number=input("\nSecond number: ") if second_number=='q': break answer = int(first_number) / int(second_number) print(answer)
# else代码块 # 优化 print("Give me two number,and I'll divide them.") print("Enter 'q' to quit.") while True: first_number=input("\nFirst number: ") if first_number=='q': break second_number=input("\nSecond number: ") if second_number=='q': break try: answer = int(first_number) / int(second_number) except ZeroDivisionError: print("你不能除以零!") else: print(answer)
# 处理FileNotFoundError异常 filename='alice.txt' with open(filename) as f_obj: contents=f_obj.read() # 访问不存在的文件
filename='alice.txt' try: with open(filename) as f_obj: contents=f_obj.read() except FileNotFoundError: msg="找不到 "+filename+",该文件可能不存在!!!" print(msg)
filename='book.txt' try: with open(filename) as f_obj: contents=f_obj.read() except FileNotFoundError: msg="找不到 "+filename+",该文件可能不存在!!!" print(msg) else: "计算文件大约包含多少个单词" words=contents.split() num_words=len(words) print(filename+" 大约有 "+str(num_words)+" 个字。")
使用多个文件
def count_words(filename): """计算文件大约包含多少个单词""" try: with open(filename) as f_obj: contents=f_obj.read() except FileNotFoundError: msg="找不到 "+filename+",该文件可能不存在!!!" print(msg) else: """计算文件大约包含多少个单词""" words=contents.split() num_words=len(words) print(filename+" 大约有 "+str(num_words)+" 个字。") # filename='book.txt' # count_words(filename) filenames=['test1.txt','test2.txt','test4.txt','book.txt'] for filename in filenames: count_words(filename)
# 失败时,一声不吭 def count_words(filename): """计算文件大约包含多少个单词""" try: with open(filename) as f_obj: contents=f_obj.read() except FileNotFoundError: pass # msg="找不到 "+filename+",该文件可能不存在!!!" # print(msg) else: """计算文件大约包含多少个单词""" words=contents.split() num_words=len(words) print(filename+" 大约有 "+str(num_words)+" 个字。") # filename='book.txt' # count_words(filename) filenames=['test1.txt','test2.txt','test4.txt','book.txt'] for filename in filenames: count_words(filename)
数据存储
# 存储 import json numbers=[2,3,5,7,11,13] filename='numbers.json' with open(filename,'w') as f_obj: json.dump(numbers,f_obj)
# 读取 import json filename='numbers.json' with open(filename) as f_obj: numbers=json.load(f_obj) print(numbers)
# 保存和读取用户信息 import json username = input("What is your name? ") filename='username.json' with open(filename,'w') as f_obj: json.dump(username,f_obj) print("We'll remember you when you come back, "+username+"!")
# 再次回来 import json filename='username.json' with open(filename) as f_obj: username=json.load(f_obj) print("welcome back , "+username+"!")
import json # 如果以前存储了用户名,就加载它 # 否则就提示用户输入用户名并存储 filename='username.json' try: with open(filename) as f_obj: username=json.load(f_obj) except FileNotFoundError: username = input("What is your name? ") with open(filename,'w') as f_obj: json.dump(username,f_obj) print("We'll remember you when you come back, "+username+"!") else: print("welcome back , "+username+"!")
重构
import json def greet_user(): """问候用户,指出其名字""" filename='username.json' try: with open(filename) as f_obj: username=json.load(f_obj) except FileNotFoundError: username = input("What is your name? ") with open(filename,'w') as f_obj: json.dump(username,f_obj) print("We'll remember you when you come back, "+username+"!") else: print("welcome back , "+username+"!") greet_user() # 在函数中尽量使用文档字符串来代替注释
import json def get_stored_username(): """如果存储了用户名,就获取它""" filename='username.json' try: with open(filename) as f_obj: username=json.load(f_obj) except FileNotFoundError: return None else: return username def greet_user(): """问候用户,指出其名字""" username = get_stored_username() if username: print("welcome back , "+username+"!") else: username = input("What is your name? ") with open(filename,'w') as f_obj: json.dump(username,f_obj) print("We'll remember you when you come back, "+username+"!") greet_user() # 使得函数的功能更加具体化,不再复杂
import json def get_stored_username(): """如果存储了用户名,就获取它""" filename='username.json' try: with open(filename) as f_obj: username=json.load(f_obj) except FileNotFoundError: return None else: return username def get_new_username(): """提示用户输入用户名""" username = input("What is your name? ") filename='username.json' with open(filename,'w') as f_obj: json.dump(username,f_obj) return username def greet_user(): """问候用户,指出其名字""" username = get_stored_username() if username: print("welcome back , "+username+"!") else: username=get_new_username() print("We'll remember you when you come back, "+username+"!") greet_user() # 最终版本,将一个函数重构成三个,使得功能更加的具体

浙公网安备 33010602011771号