Я создаю приложение GUI BMI Calculator с использованием Python и tkinter, и мне нужна помощь.
Поскольку в данной строке не должно быть специальных символов, я хочу эффективный способ обнаружения специальных символов встрока.
Я использовал метод компиляции regex, как видел онлайн.Но он не обнаружил все специальные символы.Как и когда я дал 165,56 вместо 165,56, он вернулся и ошибка в консоли.Другие символы, такие как # $ @! $ И т. Д., Все отлично работали, показывая tkMessageBox, как я запрограммировал.
Я пробовал каждый символ в строке, просматривая итерацию и находя, есть ли специальные символы, и я даже использовал regex compile, как уже упоминалосьвыше, но ни один из них не удовлетворяет моим запросам.
regex = re.compile('[@_!#$%^&*()<>?/\|}{~:]')
#assume have already got the value for h from user as 165,65
h = Entry.get(heightEntry)
if not h:
h = "0"
height = 0
elif h.isdigit() == True:
height = float(h)
elif h.isalnum() == True:
height = "None"
elif regex.search(h) == None:
for x in h:
if "." in x:
y += 1
if y >=2:
height = "None"
else:
height = float(h)
else:
height = "None"
#Check height lies between 0.5m and 3.0m or 50cm to 300cm
if not height:
print("There is no value for height to calculate")
tkMessageBox.showerror("Alert","No height value")
else:
if height == "None":
print("Invalid height value")
tkMessageBox.showerror("Alert","Invalid height value")
height = 0
elif not ((50.0<=height<=300.0) or (0.5<=height<=3.0)):
print("Invalid height value",height)
tkMessageBox.showerror("Alert","Invalid height value")
else:
if 50.0<=height<=300.0:
print("Height:",height,"cm")
else:
print("Height:",height,"m")
Я ожидал, что результат покажет окно сообщения ниже высоты == "Нет"
Но оно показывает трассировку самой последней ошибки вызова.