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

小python脚本中的缩进问题::修复了代码-现在它运行得非常完美

小python脚本中的缩进问题::修复了代码-现在它运行得非常完美,python,linux,Python,Linux,在一个小python脚本中出现了一些识别问题 更新:查看我重写课程后出现的新问题…: 更新:-终于到了 #!/usr/bin/env python3 """ contacts.py This program uses a Person class to keep track of contacts. """ class Person(object): """ The Person class defines a person in terms of a name, pho

在一个小python脚本中出现了一些识别问题 更新:查看我重写课程后出现的新问题…:

更新:-终于到了

#!/usr/bin/env python3
"""
contacts.py
This program uses a Person class to keep track of contacts.
"""
class Person(object):
    """
    The Person class defines a person in terms of a
    name, phone number, and email address.
    """

    # Constructor
    def __init__(self, name, phone, email, padress):
        self.name = name
        self.phone = phone
        self.email = email
        self.padress = padress

    def __str__(self):
        return "Person[name={}, phone={}, email={}, padress={}]".format(self.name, self.phone,
                                                                       self.email, self.padress)
# create instance person = Person(name='John Doe', phone='123454321', email='john.doe@domain.com', adress='1600 Pennsylvania ave., Washington DC')
# access property
    # Accesser Methods (getters)
    def getName(self):
        return self.name
    def getPhone(self):
        return self.phone
    def getEmail(self):
        return self.email
    def getpadress(self):
        return self.padress

 # Mutator Methods (setters)
    def setPhone(self, newPhoneNumber):
        self.phone = newPhoneNumber
    def setEmail(self, newEmailAddress):
        self.email = newEmailAddress
    def setPadress(self, newPadress):
        self.padress = newPadress
    def __str__(self):
        return "Person[name=" + self.name + \
               ",phone=" + self.phone + \
               ",email=" + self.email + \
               ",padress=" + self.padress + \
               "]"

def enter_a_friend():
    name = input("Enter friend's name: ")
    phone = input("Enter phone number: ")
    email = input("Enter email address: ")
    padress = input("Enter friend's padress:")
    return Person(name, phone, email, padress)

def lookup_a_friend(friends):
    found = False
    name = input("Enter name to lookup: ")
    for friend in friends:
        if name in friend.getName():
            print(friend)
            found = True
    if not found:
        print("No friends match that term")

def show_all_friends(friends):
    print("Showing all contacts:")
    for friend in friends:
        print(friend)

def main():
    friends = []
    running = True
    while running:
        print("\nContacts Manager")
        print("1) new contact    2) lookup")
        print("3) show all       4) end ")
        option = input("> ")
        if option == "1":
            friends.append(enter_a_friend())
        elif option == "2":
            lookup_a_friend(friends)
        elif option == "3":
            show_all_friends(friends)
        elif option == "4":
            running = False
        else:
            print("Unrecognized input. Please try again.")
    print("Program ending.")

if __name__ == "__main__":
    main()
修正了代码现在它运行完美!! 下次我尝试向代码中添加db连接时,我将尝试使用peewee。 Peewee是一个简单的小型ORM。它几乎没有表达性的概念,因此易于学习和直观使用

a small, expressive ORM
python 2.7+ and 3.4+ (developed with 3.6)
supports sqlite, mysql and postgresql
tons of extensions
Peewee将根据名称自动推断数据库表名称 是班上最好的学生。您可以通过指定 表\u数据库旁边的内部“Meta”类中的name属性 属性要了解Peewee如何生成表名的更多信息, 请参阅“表名”部分

我想我会试试这个错误 在类的中途,print函数关闭了类声明,使得它们后面的缩进部分不算作类的一部分。您需要将Access对象方法移动到打印功能之前,因为在定义的中间定义类的实例。

代码修复 将语句放在文件中的基本级别而不是函数中,然后再放在主函数后面,如果_uname _uuu==_u main uuu:

您应该将这些print语句移动到main函数中,以将它们移出全局空间,这也将修复过程中的缩进错误


还可以使用一些python语法简化访问器。Python没有类似Java的私有变量,编译器将禁止您实际引用这些值。因此,您实际上不需要使用访问器。它防止了通常仅用于设置值的不必要的代码,并为您提供了更清晰的语法,因为您只是将值设置到属性而不是函数中。如果您真的想拥有私有变量,标准是在变量名前面加一个下划线。

错误消息很清楚:main中的第63行,running=True缩进,但是它不应该是beHello亲爱的Maton-非常感谢:我关闭了缩进-所以这不是缩进Hello亲爱的Martin-更新:在一个微小的python脚本更新中有一些标识问题:查看我重写类后出现的新问题dar Martin-我添加了一些新的/重写的类-但是遇到了更多问题现在…-不幸的