小python脚本中的缩进问题::修复了代码-现在它运行得非常完美
在一个小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
#!/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-我添加了一些新的/重写的类-但是遇到了更多问题现在…-不幸的