Python基础学习_文件和异常_模块json习题

1-11 喜欢的数字

import json

写的文件

filename = 'favorite_numbers.json'

love_number = input("What are you favorite number are? ")
with open(filename,'w') as f_obj:
    json.dump(love_number, f_obj)
    print("The number is " + love_number + ".")

结果:

"999999"

读的文件

import json

filename = "favorite_numbers.json"
with open(filename) as f_obj:
    love_number = json.load(f_obj)
    print("I know your favorite number! " + "It's " + love_number + "." ) 

结果:

I know your favorite number! It's 999999.

1-12 记住喜欢的数字 合并前两个程序

import json

filename = "favorite_numbers.json"
try:
    with open(filename) as f_obj:
         love_number = json.load(f_obj)
except FileNotFoundError:
    love_number = input("What are you favorite number are? ")
    with open(filename,'w') as f_obj:
        json.dump(love_number, f_obj)
        print("The number is " + love_number + "." )
else:
    print("I know your favorite number! " + "It's " + love_number + "." )

结果:

I know your favorite number! It's 999999.

封装为函数

import json

def get_favorite_number():
    """问用户最喜欢的数字,并显示这个数字。"""
    filename = "favorite_numbers.json"
    
    try:
        with open(filename) as f_obj:   ## f_obj为文件对象的变量名
        ## json.load()中只需要放入文件对象的变量名即可
            love_number = json.load(f_obj)    
    except FileNotFoundError:
        love_number = input("What are you favorite number is ? ")
        with open(filename,'w') as f_obj:
            json.dump(love_number, f_obj)
            print("The number are " +  love_number + ".")
    else:
        print("I know your favorite number! " + "It's " + love_number + ".")

get_favorite_number()

结果:

get_favorite_number()
I know your favorite number! It's 999999.

重构

import json

def get_favorite_number_sorted():
    """获得数字,并显示数字"""
    filename = "favorite_numbers.json"
    try:
        with open(filename) as f_obj:       ## f_obj为文件对象的变量名
         ## json.load()中只需要放入文件对象的变量名即可
            love_number = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
        return love_number

def get_new_favorite_number():
    """问候用户,获得新的喜欢的数字"""
    filename = "favorite_numbers.json"
    love_number = "What are you favorite number are ?"
    
    with open(filename,'w') as f_obj:
        json.dump(love_number, f_obj)
        print("The number are " + love_number + ".")
    return love_number

def get_favorite_number():
    """问候用户喜欢的数字,并打印"""
    love_number = get_favorite_number_sorted()
    
    if love_number:
        print("I know your favorite number! " + "It's " + love_number + ".")
    else:
        love_number = get_new_favorite_number()
        print("The number is " + love_number + ".")

get_favorite_number()

结果:

I know your favorite number! It's 999999.

1-13 验证用户

即验证用户名是否与已经存在的用户名是否一样,一样则欢迎,不一样重新输入

def get_sorted_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():
    """问候用户,并指出其名字"""
    flag = True
    while flag:
        usernames = input("Please enter your name? ")
        if usernames == get_sorted_username():
            username = get_sorted_username()
            flag = False
        else:
            flag = True
            
    
    if username:
        print("Welcome back, " + username + "!")
    else:
        username = get_new_username()
        print("We'll remember you when you come back, " + username + "!")

greet_user()               

结果:

Please enter your name? liming
Welcome back, liming!

案例中文件为

username.json

"liming"

favorite_numbers.json

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值