Проверка уже существующих значений python 3.10
Подскажите пожалуйста, как правильно реализовать проверку вводимого значения?
data = {"ID": ''}
while (not data["ID"].isdigit()):
data = {"ID": input('Введите ID: ')}
if (not data["ID"].isdigit()):
print('ID необходимо указать цифрами!')
while True:
if "ID" in data:
print ("ID существует")
elif "nonexistent key" in data:
break
Соответственно тут я пытался добавить проверку по вводимому ID и если ID уже существует то появляется предупреждение
while True:
if "ID" in data:
print ("ID существует")
elif "nonexistent key" in data:
break
Однако ожидаемо он просто ищет ключ ID и при вводу любого значения выдает предупреждение о том, что ID существует
Собственно вопрос - где ошибка и как сделать так, что бы искал по значению ключа, которое вводится, а не по самому ключу.
Если это пригодится, то вот полный скрипт
import json
import re
import string
while True:
print("1. Добавить новую запись пользователя")
print("2. Добавить организацию")
print("3. Поиск по записям")
print("0. выйти из программы")
cmd = input("Выберите пункт: ")
if cmd == "1":
print ("Ввод данных")
data = {"ID": ''}
while (not data["ID"].isdigit()):
data = {"ID": input('Введите ID: ')}
if (not data["ID"].isdigit()):
print('ID необходимо указать цифрами!')
while True:
if "ID" in data:
print ("ID существует")
elif "nonexistent key" in data:
break
print ("Введите ФИО")
data["Name"] = input()
print ("Введите email")
data["Email"] = input()
print ("Введите номер телефона")
data["Phone"] = input()
with open("users.json", "a+") as file:
file.write('\n')
json.dump(data, file,ensure_ascii=False )
elif cmd == "2":
print ("Ввод данных")
data = {"companyID": ''}
while (not data["ID"].isdigit()):
data = {"ID": input('Введите ID компании: ')}
if (not data["ID"].isdigit()):
print('ID необходимо указать цифрами!')
print ("Введите название компании")
data["Name"] = input()
print ("Введите email")
data["Email"] = input()
print ("Введите номер телефона")
data["Phone"] = input()
with open("users.json", "a+") as file:
file.write('\n')
json.dump(data, file,ensure_ascii=False )
elif cmd == "3":
while True:
print("1. Поиск по пользователям")
print("2. Поиск по организациям")
cmd = input("Выберите пункт: ")
if cmd == "1":
print ("Введите ID пользователя")
w = input("Введите ID : " )
with open("Users.json") as fin:
for s in fin.readlines():
if s.find(w) > -1:
print(s.strip())
elif cmd == "2":
print ("Введите ID компании")
w = input("Введите ID : " )
with open("Users.json") as fin:
for s in fin.readlines():
if s.find(w) > -1:
print(s.strip())
elif cmd == "0":
break
Ответы (1 шт):
Автор решения: Алексей Белкин
→ Ссылка
Переделал на примерно Вашу логику:
data = {}
flag = True
while flag:
if "ID" in data:
print ("ID существует")
flag = false
else:
try:
data['ID'] = int(input('Введите ID: '))
flag = false
except:
print('Вводимое в ID должно быть целым числом!')
