gpt4 book ai didi

Python 3.x 意外的 TypeError 电话簿

转载 作者:行者123 更新时间:2023-12-01 00:27:06 24 4
gpt4 key购买 nike

class Phone_book: #Please note that this line of code has no indentation, all other lines has at least one indentation.

def __init__(self):
self.phoneDic = {}
commandsDic = { "add" : self.add , "lookup" : self.lookup , "alias" : self.alias,
"change" : self.change , "save" : self.save,
"load" : self.load , "quit" : self.i_quit }

while True:
a = input("Phone book")
b = a.split() #Splits a line of text into list items
try:
commandsDic[b[0]](*b[1:]) #Allocates
except TypeError:
print("This function does not work")
except KeyError:
print("You have written an incorrect amount of arguments")
except SystemExit:
print("Exiting...")
break

def add(self, allonym, digit):
print("Name:", allonym, "\nNumber", digit, "\nSaved in phone book!")
self.phoneDic[digit] = [allonym]


def encounter(self, allonym):
found = 0
phno = 0
for digit, allonyms in self.phoneDic.items():
if allonym in allonyms:
phno = digit
found += 1
if found == 0:
return 0
elif found == 1:
return phno
else:
return -1

def alias(self, allonym, newallonym):
if newallonym:
phno = self.encounter(allonym)
if phno > 0:
self.phoneDic[phno].append(newallonym)
print("Alias stated")

函数 alias 的目的是为 allonym 本身创建一个昵称,并与 allonym 一起保存在内存中。当我收到 TypeError 时,我无法使该函数正常工作。如何减轻错误并保存别名并与 allonym 配对?

执行

Input: Phone bookadd Bromley.Jones 12345Output: Name: Bromley.Jones Number 12345 Saved in phone book!Input: Phone bookalias Bromley.Jones BJOutput: This function does not work.

Allonym 与 name 具有相同的语言定义。Allonyms 与名称具有相同的语言定义。

最佳答案

有 2 个问题。首先,在 encounter 中:除非您要搜索的项目是第一个,否则它将始终返回 0,因为 if block 位于 。一旦找到,您只需将其返回即可:

def encounter(self, allonym):
for digit, allonyms in self.phoneDic.items():
if allonym in allonyms:
return digit
return 0

但是,这里的一个问题与第二个问题相关:字典中的键是字符串,但您将其视为整数。我会将上面的函数更改为在找不到时返回 None 。然后在 alias 函数中:

def encounter(self, allonym):
for digit, allonyms in self.phoneDic.items():
if allonym in allonyms:
return digit
return None

def alias(self, allonym, newallonym):
if newallonym:
phno = self.encounter(allonym)
if phno:
self.phoneDic[phno].append(newallonym)
print("Alias stated")

关于Python 3.x 意外的 TypeError 电话簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58491017/

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