Python菜单选择输入问题

想要写个菜单选择库函数,再输入需要更改的字符,但是陷入循环了,有什么建议或者解决方法吗?
代码:

class Node:
    #链表节点初始化
    def __init__(self, item):
        self.item = item
        self._next = None


class LinkList:
    #链表及其相关操作
    def __init__(self):
        self._head = None

    def is_empty(self):
    #判断是否为空链表,头节点为None则是空
        return self._head is None

    def length(self):
        #求链表的长度
        p = self._head
        count = 0
        while p:
            count += 1
            p = p._next
        return count

    def append(self, item):
        #向链表尾部添加元素, 考虑是否是空链表
        node = Node(item)
        p = self._head
        if not p:
            self._head = node
        else:
            while p._next:
                p = p._next
            p._next = node

    def add(self, item):
        #向链表头部插入元素
        node = Node(item)
        node._next = self._head
        self._head = node

    def insert(self, position, item):
        #向链表中插入元素
        # 头插 or 尾插 or 中间插入
        if position <= 0:
            self.add(item)
        elif position >= self.length():
            self.append(item)
        else:
            pre = self._head
            count = 0
            while count < position - 1:
                count += 1
                pre = pre._next
            node = Node(item)
            node._next = pre._next
            pre._next = node

    def get_item(self, position):
        #获取某位置的元素
        if position < 0 or position >= self.length():
            return None
        p = self._head
        count = 0
        while count != position:
            p = p._next
            count += 1
        return p.item

    def exixt_value(self, item):
        #某个值是否存在
        p = self._head
        while p:
            if p.item == item:
                return True
            else:
                p = p._next
        return False

    def remove(self, item):
         #删除元素
        p = self._head
        pre = None
        while p:
            if p.item == item:
                # 是否头节点
                if not pre:
                    self._head = p._next
                else:
                    pre._next = p._next
                    break
            else:
                pre = p
                p = p._next

    def clear(self):
        #删除链表
        self._head = None

    def travel(self):
        #列表遍历
        p = self._head
        while p:
            print(p.item, end=" ")
            p = p._next
        print()
    def use(self):
        while   True:
            self.show_menu()
            res=int(input("请输入数字1-4:"))
            if res ==1:
                print("请输入一个数:")
                self.append(int(input()))
            elif res==2:
                print("请输入一个数:")
                self.add(int(input()))
            elif res==3:
                print("请输入一个数:")
                self.exixt_value(int(input()))
            elif res==4:
                print("请输入一个数:")
                self.remove(int(input()))

    def show_menu(int):
        print("请选择如下序号:")
        print("1.尾插法增加")
        print("2.头插法增加")
        print("3.查询值是否存在")
        print("4.删除元素")

if __name__ == '__main__':

    linklist = LinkList()
    linklist.append(1)
    linklist.append(2)
    linklist.append(3)
    linklist.append(4)
    print(linklist.length())  # 4
    linklist.travel()  # 1 2 3 4
    linklist.add(5)
    linklist.add(6)
    linklist.travel()   # 6 5 1 2 3 4
    linklist.insert(2, 7)
    linklist.insert(2, 8)
    linklist.travel()   #  6 5 8 7 1 2 3 4
    print(linklist.get_item(2), linklist.get_item(12), linklist.get_item(4))    # 8 None 1
    print(linklist.exixt_value(6), linklist.exixt_value(20))    # True False
    linklist.remove(9)
    linklist.remove(5)
    linklist.travel()   # 6 8 7 1 2 3 4
    linklist.use()
    linklist.clear()
    linklist.travel()  # 空

img