版本一:
实现存储用户的名字:
remember_me.py
python">#易择365
from pathlib import Path
import json
username = input("请输入你的名字:")
path = Path('username.json')
contents = json.dumps(username)
path.write_text(contents)
print(f"已经记录了你的名字是:{username}!")
向名字已被存储的用户发出问候:
greet_user.py
python">#易择365
from pathlib import Path
import json
path = Path('username.json')
contents = path.read_text()
username = json.loads(contents)
print(f"欢迎回来, {username}!")
版本二:合并两个模块
remember_me.py
python">#易择365
from pathlib import Path
import json
def greet_user():"""问候用户,并说出其名字"""path = Path('username.json')if path.exists():user = path.read_text()username = json.loads(user)print(f"欢迎回来, {username}!")else:username = input("请输入你的名字:")user = json.dumps(username)path.write_text(user)print(f"已经记录了你的名字:{username}!")
版本三:重构方法
抽取出获取用户名
remember_me.py
python">#易择365
from pathlib import Path
import json
def get_stored_username(path):if path.exists():user = path.read_text()username = json.loads(user)return usernameelse:return None
def greet_user():"""问候用户,并说出其名字"""path = Path('username.json')username = get_stored_username(path)if username:print(f"欢迎回来, {username}!")else:username = input("请输入你的名字:")user = json.dumps(username)path.write_text(user)print(f"已经记录了你的名字:{username}!")
继续抽取输入用户名:
python">#存储用户输入的名字:易择365
from pathlib import Path
import json
def get_stored_username(path):"""读取存储的用户名字"""if path.exists():con=path.read_text()u_name=json.loads(con)return u_nameelse:return None
def get_new_username(path):"""存储用户名字"""u_name=input("请输入你的名字:")con=json.dumps(u_name)path.write_text(con)return u_namedef greet_user():"""问候用户"""path=Path('username.json')u_name=get_stored_username(path)if u_name:print(f"欢迎回来:{u_name}")else:u_name=get_new_username(path)print(f"已经记录了你的名字:{u_name}")
版本四:存储用户更多的信息
python">#存储用户输入的名字:易择365
from pathlib import Path
import json
def get_stored_username(path):"""读取存储的用户名字"""if path.exists() and path.read_text():con=path.read_text()user=json.loads(con)return userelse:return None
def get_new_username(path):"""存储用户名字"""user={}user['u_name']=input("输入名字:")user['u_age']=input("输入年龄:")user['u_sex']=input("输入性别:")con=json.dumps(user)path.write_text(con)return userdef greet_user():"""问候用户"""path=Path('username.json')user=get_stored_username(path)if user:print(f"欢迎您:{user['u_name']}")else:user=get_new_username(path)print(f"已经记录了你的名字:{user['u_name']}")
版本五:当前用户是否是上次运行该程序的用户
python">#易择365
from pathlib import Path
import json
def get_stored_username(path):"""读取存储的用户名字"""if path.exists() and path.read_text():con=path.read_text()user=json.loads(con)return userelse:return None
def get_new_username(path):"""存储用户名字"""user={}user['u_name']=input("输入名字:")user['u_age']=input("输入年龄:")user['u_sex']=input("输入性别:")con=json.dumps(user)path.write_text(con)return userdef get_username_ask(user):req=input(f"{user['u_name']}是您的用户名吗?输入如:y/n")return reqdef greet_user():"""问候用户"""path=Path('username.json')user=get_stored_username(path)if user:if get_username_ask(user)=='y':print(f"欢迎您:{user['u_name']}")else:user=get_new_username(path)print(f"已经记录了你的名字:{user['u_name']}")else:user=get_new_username(path)print(f"已经记录了你的名字:{user['u_name']}")
每个函数都执行单一而清晰 的任务,要编写出清晰且易于维护和扩展的代码,这种划分必不可少。