Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用函数解决这个Python问题?_Python_Json_Python 3.x_Function_Pep - Fatal编程技术网

如何使用函数解决这个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 + "!")