gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:26 24 4
gpt4 key购买 nike

在一个小小的 python 脚本中遇到了一些身份问题更新:查看我重写类(class)后出现的新问题...:

更新: - 终于到了

#!/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()

修复了代码,现在它运行完美!下次我尝试向此代码添加数据库连接时 - 我将尝试使用 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 will automatically infer the database table name from the name of the class. You can override the default name by specifying a table_name attribute in the inner “Meta” class (alongside the database attribute). To learn more about how Peewee generates table names, refer to the Table Names section.

我想我会尝试一下

最佳答案

错误

类中的 print 函数正在关闭类声明,使得它们后面的其余缩进内容不被视为类的一部分。当您在类的定义中间创建类的实例时,您需要将访问器方法移至 print 函数之前。

代码修复

将语句放在文件的基本级别(而不是函数中),然后紧随其后的是 main() 函数和 if __name__ == "__main__":

您应该将这些打印语句移动到您的 main() 函数中,以使它们脱离全局空间,这也将修复过程中的缩进错误。

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

关于python - 一个小 python 脚本中的缩进问题::修复了代码 - 现在它运行得非常完美,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53080772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com