如何使用函数解决这个Python问题?
上述代码中的函数如何使用函数解决这个Python问题?,python,json,python-3.x,function,pep,Python,Json,Python 3.x,Function,Pep,上述代码中的函数greet\u user()应根据以下文本重写: 只剩下嵌套的if语句了。这可以通过将检查用户名是否正确的代码移动到单独的函数来清除。如果您喜欢此练习,可以尝试创建一个名为check\u username()的新函数,看看是否可以从greet\u user()中删除嵌套的If语句 这是我试图解决这个问题的尝试: import json def get_stored_username(): """Get stored username if available."""
greet\u user()
应根据以下文本重写:
只剩下嵌套的if
语句了。这可以通过将检查用户名是否正确的代码移动到单独的函数来清除。如果您喜欢此练习,可以尝试创建一个名为check\u username()
的新函数,看看是否可以从greet\u user()
中删除嵌套的If
语句
这是我试图解决这个问题的尝试:
import json
def get_stored_username():
"""Get stored username if available."""
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():
"""Prompt for a 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():
"""Greet the user by name."""
username = get_stored_username()
if username:
correct = input("Are you " + username + "? (y/n) ")
if correct == 'y':
print("Welcome back, " + username + "!")
return
# We got a username, but it's not correct.
# Let's prompt for a new username.
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")
greet_user()
这是怠速的输出:
def greet_user():
"""Greet the user by name."""
username = get_stored_username()
if username:
check_username()
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")
def check_username():
correct = input("Are you " + username + "? (y/n) ")
if correct == 'y':
print("Welcome back, " + username + "!")
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")
在该范围内没有变量
username
。在great\u user
中有一个名为该名称的局部变量,但尚未将其传递给check\u username
。只需添加该参数/参数
What is your name? eric
We'll remember you when you come back, eric!
Are you eric? (y/n) y
Welcome back, eric!
Are you eric? (y/n) n
What is your name? ever
We'll remember you when you come back, ever!
Are you ever? (y/n) y
Welcome back, ever!
此外,您的流量控制也不舒服
check_username
应该只做这么多,返回它的状态,并让新用户的注册保留在已经为此编写的函数中。在该范围内没有变量username
。在great\u user
中有一个名为该名称的局部变量,但尚未将其传递给check\u username
。只需添加该参数/参数
What is your name? eric
We'll remember you when you come back, eric!
Are you eric? (y/n) y
Welcome back, eric!
Are you eric? (y/n) n
What is your name? ever
We'll remember you when you come back, ever!
Are you ever? (y/n) y
Welcome back, ever!
此外,您的流量控制也不舒服
check_username
应该只做那么多,返回它的状态,让新用户的注册保留在已经为此目的编写的函数中。我自己也尝试过。我的尝试现在就发布了。预期的输出是什么,当前的输出是什么?因为您的问题不在于读取文件,只需对输入进行硬编码。除非你的问题直接涉及阅读输入,不应该有任何手动输入:不要让我们做多余的输入。UnboundLocalError:分配前引用的局部变量“username”
-阅读有关我自己尝试过的内容。我的尝试现在就发布了。预期输出是什么,当前输出是什么?因为您的问题不在于阅读文件,只需输入硬代码即可。除非您的问题直接涉及阅读输入,否则不应该有任何手动输入:不要让我们进行多余的键入。UnboundLocalError:分配前引用的局部变量“username”
-阅读您的代码,我得到以下输出:回溯(最近一次调用):文件“C:\Users\luka.ivankovic\Documents\python\u work\files and exceptions\JSON\memory\u me.py”,greet\u user('luka')TypeError:greet\u user()接受0个位置参数,但给出了1个
我理解。感谢您抽出时间。通过您的代码,我得到以下输出:回溯(最近的调用最后一次):File”C:\Users\luka.ivankovic\Documents\python\u work\files and exceptions\JSON\memory\u me.py”,greet\u user('luka')TypeError:greet\u user()接受0个位置参数,但给出1个
我理解。感谢您抽出时间。
def greet_user():
"""Greet the user by name."""
username = get_stored_username()
if username:
check_username(username)
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")
def check_username(username):
correct = input("Are you " + username + "? (y/n) ")
if correct == 'y':
print("Welcome back, " + username + "!")
username = get_new_username()
print("We'll remember you when you come back, " + username + "!")