Форум сайта python.su
Есть форма с тремя полями - длины сторон треугольника. Если не выполняется условие, что сууммы двух любых сторон должны быть больше третей, выдать на форму ошибку и попросить повторить ввод. Пошел таким путем:
#! /usr/bin/env python # -*- coding: utf-8 -*- from django import forms ## проблема наверное тут #++++++++++++++++++++++++++++++++++++++++++++ from django.core.exceptions import ValidationError #============================================== class triangle(forms.Form): ##стороны треуголника ab = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника АВ:','value': 'ab',})) bc = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника ВС:','value': 'bc',})) ac = forms.IntegerField(widget = forms.NumberInput(attrs = {'size':'3','title':'сторона треугольника АС:','value': 'ac',})) def clean(self): cleaned_data = super(triangle, self).clean() ab = cleaned_data.get("ab") bc = cleaned_data.get("bc") ac = cleaned_data.get("ac") ##if ab and bc and ac: # Only do something if both fields are valid so far. if ab+bc <= ac and ab+ac <= bc and bc+ac <= ab: raise forms.ValidationError("Ошибочные данные, сумма любых двух сторон треугльника должна быть больше третей стороны.") # Always return the full collection of cleaned data. return cleaned_data
Офлайн
cikloneзачем что-то импортировать?
что нужно импортировать из Django.core.
Офлайн
FishHookДык не работает! вот тут вычитал: Your text to link here…
Отредактировано ciklone (Дек. 8, 2015 15:47:07)
Офлайн
cikloneКогда что-то не работает, обязательно нужно что-нибудь импортировать чтоб заработало? Чувствуется крепкий логик.
Дык не работает!
Офлайн
FishHook
Офлайн
Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?
Офлайн
FishHookНе проходит проверка. При введенных неверных данных форма не ругается.
Понимаете, “не работает” может быть очень разным. У вас автомобиль есть? Попробуйте прийти в автосервис и сказать, что-та не работает. Тут возможны варианты от “бензин кончился” до пожара в гаражном кооперативе. Дорогой друг, вы же программист, вы логик и алгоритмизатор. Какой ответ вы рассчитываете получить?
Офлайн
Ну ок,
if ab+bc <= ac and ab+ac <= bc and bc+ac <= ab:
если условие1 И условие2 И условие3:
ошибка
Отредактировано FishHook (Дек. 8, 2015 16:06:22)
Офлайн
FishHookтут Вы не правы, это стандартная проверка на то, является ли это треугольником. Запустите отдельно этот код;
Ну ок,
import sys a=None b=None c=None a=float(input()) b=float(input()) c=float(input()) if a+b >c and a+c > b and b+c> a: print("triangle") else: print("Not triangle")
Офлайн
В вашем варианте:
если две стороны меньше третьей И две другие стороны меньше третьей И …
В правильном варианте:
если две стороны меньше третьей ИЛИ две другие стороны меньше третьей ИЛИ
Офлайн