Advertisement
Purposelessness

Untitled

Dec 12th, 2022
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. from enum import Enum
  2.  
  3.  
  4. class Node:
  5. def __init__(self, number, name):
  6. if 0 < len(str(number)) < 8 and 0 < len(name) < 16:
  7. self.name = name
  8. self.number = number
  9. else:
  10. raise ValueError("Invalid value of name or number!")
  11.  
  12.  
  13. class HashTable:
  14. def __init__(self):
  15. self.size = 0
  16. self.table = []
  17.  
  18. def add(self, number, name):
  19. flag = 0
  20. for i in range(self.size):
  21. if self.table[i].number == number:
  22. self.table[i].name = name
  23. flag = 1
  24. if not flag:
  25. self.table.append(Node(number, name))
  26. self.size += 1
  27.  
  28. def find(self, number):
  29. flag = 0
  30. for i in range(self.size):
  31. if self.table[i].number == number:
  32. flag = 1
  33. print(self.table[i].name)
  34. break
  35. if not flag:
  36. print("not found")
  37.  
  38. def delt(self, number):
  39. temp = 0
  40. flag = 0
  41. for i in range(self.size):
  42. if self.table[i].number == number:
  43. flag = 1
  44. temp = i
  45. break
  46. if flag:
  47. self.table.pop(temp)
  48. self.size -= 1
  49.  
  50.  
  51. class Command(Enum):
  52. EXIT = 0
  53. ADD = 1
  54. DEL = 2
  55. FIND = 3
  56. INFO = 7
  57.  
  58. def __str__(self):
  59. return str(self.value)
  60.  
  61. def __eq__(self, other):
  62. if type(other) == int:
  63. return self.value == other
  64. elif type(other) == str:
  65. return self.name.lower() == other
  66. else:
  67. raise TypeError("Impossible to compare there types!")
  68.  
  69.  
  70. def process(hash_table, command, value=None):
  71. if command == Command.ADD:
  72. if value:
  73. if len(value) == 2:
  74. if value[0].isdigit() and value[1].isalpha():
  75. number = int(value[0])
  76. name = value[1]
  77.  
  78. hash_table.add(number, name)
  79. elif value[1].isdigit() and value[0].isalpha():
  80. number = int(value[1])
  81. name = value[0]
  82.  
  83. hash_table.add(number, name)
  84. else:
  85. raise ValueError("Invalid value of number or name!")
  86. else:
  87. raise ValueError("Invalid value of a pair!")
  88. elif command == Command.DEL:
  89. if value:
  90. if len(value) == 1:
  91. if value[0].isdigit():
  92. value = int(value[0])
  93.  
  94. hash_table.delt(value)
  95. else:
  96. raise ValueError("Invalid value of number!")
  97. else:
  98. raise ValueError("Invalid value of number!")
  99. elif command == Command.FIND:
  100. if value:
  101. if len(value) == 1:
  102. if value[0].isdigit():
  103. value = int(value[0])
  104.  
  105. hash_table.find(value)
  106. else:
  107. raise ValueError("Invalid value of number!")
  108. else:
  109. raise ValueError("Invalid value of number!")
  110. elif command == Command.INFO:
  111. print("\nApplication instructions:\n\t"
  112. "1) type '1' or 'add' to add a pair of number : name\n\t"
  113. "2) type '2' or 'del' to delete a pair of number : name\n\t"
  114. "3) type '3' or 'find' to find a name corresponding to the number\n\t"
  115. "4) type '7' or 'info' to get this information again\n\t"
  116. "5) type '0' or 'exit' to exit the program\n")
  117. elif command == Command.EXIT:
  118. print("\nEnd of program.")
  119. quit(0)
  120.  
  121.  
  122. def reader(hash_table):
  123. count = int(input())
  124. # print("Start the program.")
  125. # process(hash_table, 'info')
  126. for i in range(count):
  127. _input = input().split()
  128. if not _input:
  129. break
  130. temp, buff = *_input[:1], _input[1:]
  131. if len(buff) > 2:
  132. raise ValueError("Invalid value of name and number!")
  133. if temp.isdigit() and len(temp) == 1:
  134. temp = int(temp)
  135. process(hash_table, temp, buff)
  136. elif temp.isalpha():
  137. temp.lower()
  138. if temp in ('find', 'del', 'add', 'exit', 'info'):
  139. process(hash_table, temp, buff)
  140.  
  141.  
  142. def main():
  143. _hash = HashTable()
  144. reader(_hash)
  145.  
  146.  
  147. if __name__ == "__main__":
  148. main()
  149.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement