Найти - Пользователи
Полная версия: Ошибка с input-ом
Начало » Python для новичков » Ошибка с input-ом
1
vladZagrevskij
Добрый день! Я - новичок в питоне. Знаний у меня есть немного, но практики - ноль. Вот я и решил что-нибудь наверстать. Пришла в голову одна идея, вот тут про нее весьма подробно описано. Если вкратце - по известным элементам треугольника(стороны, углы) найти неизвестные и рассмотреть все случаи. Суть такова: сначала input-ом получаем все углы и стороны. Если известны - пользователь так и пишет число, а нет - звездочку. Например:
Angle A: 45
Angle B: twenty-one
Write a number or *! *
Angle C: 452223.7
Incorrect input.
Angle A:
1. Программа принимает только числа или звездочку
2. Сумма всех известных углов <= 180
Но тут же возникла проблема. Если ввести * то не появляется следующая просьба ввода. Но вводить можно. Извиняюсь за столь длинное описание, наверняка ошибка очень и очень глупая но я ее не заметил. Прошу помочь.
import math
#Get information about triangle
AnglesDetector = False
SidesDetector = False
FloatDetector = False
Angles = {'Angle A' : 0, 'Angle B' : 0, 'Angle C' : 0}
Sides = {'Side A' : 0, 'Side B': 0, 'Side C': 0}
anglesSum = 0
while AnglesDetector == False:
    for element in Angles:
        item = input(element + ' :')
        while FloatDetector == False:
            if item == "*":
                Angles[element] = item
                FloatDetector == True
            else:
                try:
                    float(item)
                except ValueError:
                    item = input("Write a number or *! ")
                else:
                    Angles[element] = float(item)
                    anglesSum += Angles[element]
                    FloatDetector = True
        print(Angles)
        FloatDetector = False
    if anglesSum > 180:
        print('Incorrect input')
        print(Angles)
    else:
        AnglesDetector = True
    print(Angles)
Да, кстати мне код не очень нравится и, наверное, можно его сделать покороче. Но очень интересно где ошибка.
mgk
            if item == "*":
                Angles[element] = item
                FloatDetector == True
Если в строке FloatDetector заменить == на =, то произойдёт выход из цикла.

Если нужна будет помощь в оформлении кода, маякни, помогу
vladZagrevskij
Окей, спасибо! Все заработало.
Оформление кода это, я так понимаю, сделать его проще, да?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB