Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.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 - Fatal编程技术网

Python用户数据检查

Python用户数据检查,python,Python,我有一个程序,获取用户的输入,然后询问信息是否正确。但是,当用户输入完信息后,我发现以下代码出现错误: #Welcome print("Welcome to the game!\n") def data(): #Age age = int(input("Enter your age: ")) #Gender gen = input("Enter your gender: ") #email mail = input("Enter your em

我有一个程序,获取用户的输入,然后询问信息是否正确。但是,当用户输入完信息后,我发现以下代码出现错误:

#Welcome
print("Welcome to the game!\n")


def data():
    #Age
    age = int(input("Enter your age: "))
    #Gender
    gen = input("Enter your gender: ")
    #email
    mail = input("Enter your email: ")
    #username
    name = input("Enter your name: ")
    return (age, gen, mail, name)

def datacheck():
    print("Your information:\n")
    print("Age: ", age, "\n")
    print("Gender: ", gen, "\n")
    print("Email: ", mail, "\n")
    print("Username: ", name, "\n")
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        data()
        #Array to variables
        age = data[0]
        gen = data[1]
        mail = data[2]
        name = data[3]
        #datacheck
        datacheck()


data = data()


#Array to Variable.
age = data[0]
gen = data[1]
mail = data[2]
name = data[3]
#datacheck
datacheck()
我得到的错误是:

回溯最近的调用上次:文件 /Users/joe/Documents/test123.py,第48行,在 datacheck文件/Users/joe/Documents/test123.py,第20行,在datacheck中 printAge:,age,\n UnboundLocalError:赋值前引用的局部变量“age”

如果我键入但重新输入信息无效,则不会出错:

#Welcome
print("Welcome to the game!\n")


def data():
    #Age
    age = int(input("Enter your age: "))
    #Gender
    gen = input("Enter your gender: ")
    #email
    mail = input("Enter your email: ")
    #username
    name = input("Enter your name: ")
    return (age, gen, mail, name)

def datacheck():
    print("Your information:\n")
    print("Age: ", age, "\n")
    print("Gender: ", gen, "\n")
    print("Email: ", mail, "\n")
    print("Username: ", name, "\n")
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        data()
        #datacheck
        datacheck()


data = data()


#Array to Variable.
age = data[0]
gen = data[1]
mail = data[2]
name = data[3]
#datacheck
datacheck()

如何获得它,以便用户可以重新输入其信息数据函数?

您的变量不是全局变量,您需要将它们传递给函数或声明为全局变量

此外,应使用原始输入,而不是此处所述的字符串输入:


适用于我。

您的变量不是全局变量,您需要将它们传递给函数或声明为全局变量

此外,应使用原始输入,而不是此处所述的字符串输入:

适合我。

年龄、性别、邮件、姓名在数据和数据检查中都是局部变量,这些变量的作用域就是它们所属的方法。必须将这些变量定义为全局变量,或者将变量/元组对象从一个方法传递到另一个方法

根据您的逻辑,您需要将元组对象传递到datacheck,将其修改为datachecktuple,我对其进行了如下测试:

hzhang@dell-work ~/PycharmProjects/Test $ cat test.py 
#Welcome
print("Welcome to the game!\n")


def data():
    #Age
    age = int(input("Enter your age: "))
    #Gender
    gen = input("Enter your gender: ")
    #email
    mail = input("Enter your email: ")
    #username
    name = input("Enter your name: ")
    return (age, gen, mail, name)


def datacheck(data):
    age = data[0]
    gen = data[1]
    mail = data[2]
    name = data[3]

    print("Your information:\n")
    print("Age: ", age, "\n")
    print("Gender: ", gen, "\n")
    print("Email: ", mail, "\n")
    print("Username: ", name, "\n")
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        values = data()
        #datacheck
        datacheck(values)


data = data()

#Array to Variable.
age = data[0]
gen = data[1]
mail = data[2]
name = data[3]
#datacheck
datacheck(data)hzhang@dell-work ~/PycharmProjects/Test $ python test.py 
Welcome to the game!

Enter your age: 22
Enter your gender: "male"
Enter your email: "hi@email.com"
Enter your name: "haifzhan"
Your information:

('Age: ', 22, '\n')
('Gender: ', 'male', '\n')
('Email: ', 'hi@email.com', '\n')
('Username: ', 'haifzhan', '\n')
Is it correct? Yes or No: "Yes" 
('Hello, ', 'haifzhan')
age、gen、mail、name在data和datacheck中都是局部变量,这些变量的作用域就是它们所属的方法。必须将这些变量定义为全局变量,或者将变量/元组对象从一个方法传递到另一个方法

根据您的逻辑,您需要将元组对象传递到datacheck,将其修改为datachecktuple,我对其进行了如下测试:

hzhang@dell-work ~/PycharmProjects/Test $ cat test.py 
#Welcome
print("Welcome to the game!\n")


def data():
    #Age
    age = int(input("Enter your age: "))
    #Gender
    gen = input("Enter your gender: ")
    #email
    mail = input("Enter your email: ")
    #username
    name = input("Enter your name: ")
    return (age, gen, mail, name)


def datacheck(data):
    age = data[0]
    gen = data[1]
    mail = data[2]
    name = data[3]

    print("Your information:\n")
    print("Age: ", age, "\n")
    print("Gender: ", gen, "\n")
    print("Email: ", mail, "\n")
    print("Username: ", name, "\n")
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        values = data()
        #datacheck
        datacheck(values)


data = data()

#Array to Variable.
age = data[0]
gen = data[1]
mail = data[2]
name = data[3]
#datacheck
datacheck(data)hzhang@dell-work ~/PycharmProjects/Test $ python test.py 
Welcome to the game!

Enter your age: 22
Enter your gender: "male"
Enter your email: "hi@email.com"
Enter your name: "haifzhan"
Your information:

('Age: ', 22, '\n')
('Gender: ', 'male', '\n')
('Email: ', 'hi@email.com', '\n')
('Username: ', 'haifzhan', '\n')
Is it correct? Yes or No: "Yes" 
('Hello, ', 'haifzhan')

在尝试使用变量之前,需要将变量从第一个函数传递到第二个函数

#Welcome
print("Welcome to the game!\n")


def data():
    age = int(input("Enter your age: "))
    gen = str(input("Enter your gender: "))
    mail = str(input("Enter your email: "))
    name = str(input("Enter your name: "))
    return (age, gen, mail, name)

def datacheck():
    age, gen, mail, name = data()
    print("Your information:\n")
    print("Age: %s\n"%(age))
    print("Gender: %s\n"%(gen))
    print("Email: %s\n"%(mail))
    print("Username: %s\n"%(name))
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        datacheck()

#datacheck
datacheck()

在尝试使用变量之前,需要将变量从第一个函数传递到第二个函数

#Welcome
print("Welcome to the game!\n")


def data():
    age = int(input("Enter your age: "))
    gen = str(input("Enter your gender: "))
    mail = str(input("Enter your email: "))
    name = str(input("Enter your name: "))
    return (age, gen, mail, name)

def datacheck():
    age, gen, mail, name = data()
    print("Your information:\n")
    print("Age: %s\n"%(age))
    print("Gender: %s\n"%(gen))
    print("Email: %s\n"%(mail))
    print("Username: %s\n"%(name))
    yn = input("Is it correct? Yes or No: ")
    if yn == "Yes":
        print("Hello, ", name)
    if yn == "No":
        datacheck()

#datacheck
datacheck()
你有问题

<> P>此外,我认为你可能想考虑存在。也就是说,如果我对您使用用户数据的假设是正确的。您不必将用户的属性保存在一组数组列表中,而可以将用户的属性保存在一种称为数组的东西中。我的意思是,如果你的用户最终拥有2000个属性,你是否想记住哪个属性编号代表他们的眼睛颜色,这样你就可以在列表中引用它?可能不会。哈哈

这种方法可能会使您的代码更易于使用/重用,并在将来更有条理:

class User():
    """A class representing a user.

    defaults set.
    """

    def __init__(self, data={'age': 1,
                             'gender': 'x',
                             'mail': 'user@default',
                             'name': 'User'}):

        self.data = data
        self.age = self.data['age']
        self.gender = self.data['gender']
        self.mail = self.data['mail']
        self.name = self.data['name']

    def __str__(self):
        """The string representation of a User object."""

        return self.name


    def get_age(self):
        """Return the user's age."""

        return self.age

    def get_gender(self):
        """Return the user's gender."""

        return self.gen

    def get_mail(self):
        """Return the user's email address."""

        return self.mail

    def get_name(self):
        """Return the user's name."""

        return self.name

    def get_data(self):
        """Return a dictionary containing a User's info."""

        return self.data

if __name__=="__main__":

    user_data = {} # will contain our data

    # ask for user input
    for key in ["age", "gender", "mail", "name"]:
        user_data[key] = raw_input("Enter your %s: " % key)

    # Store user input data in an object
    user = User(data=user_data)

    print user.get_data() # prints a dictionary containing user values
你有问题

<> P>此外,我认为你可能想考虑存在。也就是说,如果我对您使用用户数据的假设是正确的。您不必将用户的属性保存在一组数组列表中,而可以将用户的属性保存在一种称为数组的东西中。我的意思是,如果你的用户最终拥有2000个属性,你是否想记住哪个属性编号代表他们的眼睛颜色,这样你就可以在列表中引用它?可能不会。哈哈

这种方法可能会使您的代码更易于使用/重用,并在将来更有条理:

class User():
    """A class representing a user.

    defaults set.
    """

    def __init__(self, data={'age': 1,
                             'gender': 'x',
                             'mail': 'user@default',
                             'name': 'User'}):

        self.data = data
        self.age = self.data['age']
        self.gender = self.data['gender']
        self.mail = self.data['mail']
        self.name = self.data['name']

    def __str__(self):
        """The string representation of a User object."""

        return self.name


    def get_age(self):
        """Return the user's age."""

        return self.age

    def get_gender(self):
        """Return the user's gender."""

        return self.gen

    def get_mail(self):
        """Return the user's email address."""

        return self.mail

    def get_name(self):
        """Return the user's name."""

        return self.name

    def get_data(self):
        """Return a dictionary containing a User's info."""

        return self.data

if __name__=="__main__":

    user_data = {} # will contain our data

    # ask for user input
    for key in ["age", "gender", "mail", "name"]:
        user_data[key] = raw_input("Enter your %s: " % key)

    # Store user input data in an object
    user = User(data=user_data)

    print user.get_data() # prints a dictionary containing user values

if-yn==No:part-datacheck更改为datacheckage,gen,mail,name if-yn==No:part-datacheck更改为datacheckage,gen,mail,name这是无限循环吗?这是无限循环吗?谢谢。今后,我将研究如何使用此功能:@用户3687911很酷。没问题!非常感谢。今后,我将研究如何使用此功能:@用户3687911很酷。没问题!