-2

当我直接将数据输入到我的函数中时,我得到了正确的输出,但是当我使用来自用户的输入来填充列表时,什么也没有发生。我没有收到任何错误或输出什么。

输入的数据应该进入列表,输入的索引应该从列表中删除。

#!/usr/bin/env python3

#class definitions
class record:

    def __init__(self,telephone,lastname,firstname):
        self.telephone = telephone
        self.lastname = lastname
        self.firstname = firstname

    def __str__(self):
        return f"Last name: {self.lastname}, First Name: {self.firstname}, Telephone: {self.telephone}"

class PhoneBook:

    def __init__(self):
        self.phonebook = []

    def addrecord(self, record):
        self.phonebook.append(record)
        return self.phonebook.index(record)

    def deleterecord(self, i):
        self.phonebook.pop(i-1)

    def printphonebook(self):
        x = 1
        for entry in self.phonebook:
            print(x,'. ',entry,sep='')
            x = x + 1

#Main
select = None
while select != 'exit':
    ph = PhoneBook()
    ph.addrecord(record(515,'fin','matt'))
    ph.addrecord(record(657,'fisher','bill'))
    select = input('Main Menu \n1. show phonebook \n2. add record \n3. remove record\nor "exit" to exit program\n')
    test = False
    while test == False:
        if select == '1':
            ph.printphonebook()
            test = True
        elif select == '2':
            x = int(input('Enter telephone number.\n'))
            y = str(input('Enter last name.\n'))
            z = str(input('Enter first name.\n'))
            ph.addrecord(record(x,y,z))
            test = True
        elif select == '3':
            i = int(input('Enter the record number youd like to delete.\n'))
            ph.deleterecord(i)
            test = True
        elif select == 'exit':
            break
        else:
            print('Invalid selection. Please try again.')
            test = True

所需的输出将是让数据根据我的 x、y 和 z 输入正确进入和退出列表,并根据 i 输入取出列表的指定索引。

4

1 回答 1

0

每次第一个 while 循环运行时,您都会清除并创建一个新的 Phonebook() 对象。
我是新手,还不够熟练,无法在短时间内解决所有问题。
您看不到新条目,因为它们每次都会被清除。

尝试使用一个 while 循环和一个 switch 语句。

于 2019-05-01T17:24:51.897 回答