缩进错误Python初学者
我在课堂幻灯片上自学python,但我正在努力让代码正常工作,我看不出我做错了什么!另外,我如何实现address,使其位于不同的类中?我不确定这样做最好。这是我迄今为止的尝试 出现的错误: self.phone=电话 缩进错误:意外缩进 简单Python电话簿缩进错误Python初学者,python,syntax,Python,Syntax,我在课堂幻灯片上自学python,但我正在努力让代码正常工作,我看不出我做错了什么!另外,我如何实现address,使其位于不同的类中?我不确定这样做最好。这是我迄今为止的尝试 出现的错误: self.phone=电话 缩进错误:意外缩进 简单Python电话簿 将输入扫描更改为原始输入 x = raw_input('Select an option -> ')` 为我工作 raw\u input提供您所期望的字符串 还要确保没有用于缩进的选项卡。将所有选项卡替换为4个空格。将输入扫描
将输入扫描更改为原始输入
x = raw_input('Select an option -> ')`
为我工作
raw\u input
提供您所期望的字符串
还要确保没有用于缩进的选项卡。将所有选项卡替换为4个空格。将输入扫描更改为原始输入
x = raw_input('Select an option -> ')`
为我工作
raw\u input
提供您所期望的字符串
还要确保没有用于缩进的选项卡。将所有制表符替换为4个空格。首先,有一些打字错误妨碍了代码的正常运行。例如,这一行:
Address=input(“| Address:”)
应该用Address
来写(注意双D)
要将Address添加为新类,只需像处理Person
一样进行即可。在同一文件中,可以有任意多个类:
class Address:
def __init__(self, address='No address defined'):
# You could create separate fields for each part of the address,
# for better results in a bigger system
self.address = address
def __str__(self):
return str(self.address)
您还需要更改Person
对象的构建方式:
class Person:
def __init__(self, name, age, phone, address):
# instance variables, unique to each Person
self.name = name
self.age = age
self.phone = phone
self.address = Address(address)
def __str__(self):
# instance variables, unique to each Person
return "Name: {}\nAge: {}\nPhone: {}\nAddress: {}".format(self.name, self.age, self.phone, self.address)
def createPerson():
print("\nNew person")
name = input(' | Name : ')
age = input(' | Age : ')
phone = input(' | Phone : ')
address = input(' | Address : ')
print("Creating person...\n")
person = Person(name, age, phone, address)
persons.append(person)
请注意,在重写Person
的\uuu str\uu
方法时,应使用格式
,而不是使用+
运算符连接字符串和值。例如,如果您处理多个值,并且不需要担心数字与字符串的连接问题,那么性能会有所提高
我还建议您使用不同的方法搜索用户。我认为检查用户名是否包含密钥比检查用户名是否包含密钥更好,因为它搜索整个字符串,而不仅仅是字符串:
match = [p for p in persons if key in p.name]
最后,我对您的入口点做了一些更改,以使其对用户更直观,并防止不必要的输入:
def exit():
print("Shutting down.")
if __name__ == '__main__':
choices = { "1" : createPerson , "2" : searchPerson, "3": exit }
x = '1'
while x != "3":
print(' (1) Create new person')
print(' (2) Search for a person')
print(' (3) Quit')
x = input('Select an option -> ')
if x not in ['1', '2', '3']:
print('Please choose one of the available options.')
continue
choices[x]()
当然,这些更改大部分都是建议,您可以接受也可以不接受。我确信还有一些其他的修改可以将代码变成更“pythonic”的东西,但是如果需要的话,可以在其他地方由其他人来解决。唯一真正的答案是将Address转换为一个单独的类。希望有帮助:)首先,有一些打字错误妨碍了代码的正常运行。例如,这一行:
Address=input(“| Address:”)
应该用Address
来写(注意双D)
要将Address添加为新类,只需像处理Person
一样进行即可。在同一文件中,可以有任意多个类:
class Address:
def __init__(self, address='No address defined'):
# You could create separate fields for each part of the address,
# for better results in a bigger system
self.address = address
def __str__(self):
return str(self.address)
您还需要更改Person
对象的构建方式:
class Person:
def __init__(self, name, age, phone, address):
# instance variables, unique to each Person
self.name = name
self.age = age
self.phone = phone
self.address = Address(address)
def __str__(self):
# instance variables, unique to each Person
return "Name: {}\nAge: {}\nPhone: {}\nAddress: {}".format(self.name, self.age, self.phone, self.address)
def createPerson():
print("\nNew person")
name = input(' | Name : ')
age = input(' | Age : ')
phone = input(' | Phone : ')
address = input(' | Address : ')
print("Creating person...\n")
person = Person(name, age, phone, address)
persons.append(person)
请注意,在重写Person
的\uuu str\uu
方法时,应使用格式
,而不是使用+
运算符连接字符串和值。例如,如果您处理多个值,并且不需要担心数字与字符串的连接问题,那么性能会有所提高
我还建议您使用不同的方法搜索用户。我认为检查用户名是否包含密钥比检查用户名是否包含密钥更好,因为它搜索整个字符串,而不仅仅是字符串:
match = [p for p in persons if key in p.name]
最后,我对您的入口点做了一些更改,以使其对用户更直观,并防止不必要的输入:
def exit():
print("Shutting down.")
if __name__ == '__main__':
choices = { "1" : createPerson , "2" : searchPerson, "3": exit }
x = '1'
while x != "3":
print(' (1) Create new person')
print(' (2) Search for a person')
print(' (3) Quit')
x = input('Select an option -> ')
if x not in ['1', '2', '3']:
print('Please choose one of the available options.')
continue
choices[x]()
当然,这些更改大部分都是建议,您可以接受也可以不接受。我确信还有一些其他的修改可以将代码变成更“pythonic”的东西,但是如果需要的话,可以在其他地方由其他人来解决。唯一真正的答案是将Address转换为一个单独的类。希望有帮助:)如果您希望人们帮助您,您需要发布错误消息。或者,如果没有错误,请解释您希望代码执行的操作,以及您得到的结果。您在缩进中混合了制表符和空格,这会混淆Python。只使用其中一个。最好是空间。(我将此作为注释而不是答案发布,因为我不理解您问题中的“实现地址,以便它位于不同的类中”部分)至少有一个输入错误:您将一个名为
address
的变量赋值为一个'd',但希望用两个'd'作为address
访问它。你的标题说你有一个错误。缩进在代码的StackOverflow呈现中看起来是正常的,但如果是错误,请验证缩进在整个过程中是一致的,并且您没有混合空格和制表符。如果希望人们帮助您,则需要发布错误消息。或者,如果没有错误,请解释您希望代码执行的操作,以及您得到的结果。您在缩进中混合了制表符和空格,这会混淆Python。只使用其中一个。最好是空间。(我将此作为注释而不是答案发布,因为我不理解您问题中的“实现地址,以便它位于不同的类中”部分)至少有一个输入错误:您将一个名为address
的变量赋值为一个'd',但希望用两个'd'作为address
访问它。你的标题说你有一个错误。缩进在代码的StackOverflow呈现中看起来不错,但如果是错误,请验证缩进在整个过程中是一致的,并且没有混合空格和制表符。如果OP使用3.X,并且他可能是因为他将print
视为一个函数,那么raw\u input
就不是一个内置的乐趣