Я написал Python программу около 100 строк, и она просто не запускалась с определенной точки - PullRequest
1 голос
/ 05 апреля 2020

Я написал программу из примерно 100 строк в python, большая часть которой находится в большой функции. У него было много операторов if elif и else, когда я его запускаю, в начале это выглядит многообещающе, но останавливается без ошибок и просто не продолжается. я написал это в VSCode и попытался запустить его в терминале, это не сработало. Я гуглил это и ничего не нашел? Он останавливается перед вторым оператором if, пожалуйста, помогите! (Я знаю, что это может быть не очень хороший вопрос, но я не совсем понимаю, как его создать, пожалуйста, просто не имейте в виду) Пожалуйста, игнорируйте текст printde, он находится в мой язык

def distance(Xa, Xb, Ya, Yb):
    und_sqr = 0.00
    result = 0.0000
    try:
        und_sqr = (Xa - Xb) ** 2 + (Ya - Yb) ** 2
        result = und_sqr ** 0.5
        return result
    except:
        ValueError
    print("Dati doar numere")
    distance(Xa, Xb, Ya, Yb)


def pct_in_functie(Xm, Ym, Xa, Ya):
    Xresult = 0.00
    Yresult = 0.00
    try:
        Xresult = 2 * Xm - Xa
        Yresult = 2 * Ym - Ya
        return Xresult, Yresult
    except:
        ValueError
    print("Dati numere nu litere!!!")
    pct_in_functie(Xm, Ym, Xa, Ya)


def mij_sgmt(Xa, Xb, Ya, Yb):
    Xm = 0, 00
    Ym = 0, 00
    try:
        Xm = (int(Xa) + int(Xb)) / 2
        Ym = (int(Ya) + int(Yb)) / 2
        return Xm, Ym
    except:
        ValueError
    print("Dati doar numere!!!")
    mij_sgmt(Xa, Xb, Ya, Yb)


def maths():

    alg = input("pentru algebara apasati 1, ppentru geometrie apasati 2: ")
    if int(alg) == 1:
        print("Alege varianta: ")
        ach = input("pentru distanta 1, penrtru mijloc 2: ")
        if ach == 1:
            print("Perect!")
            alch = input(
                "pentru distanta normala , 1, pentru aflarea unui punct in functie de distanta si celalalt punct, 2"
            )
            if alch == 1:
                Xa = input("Dati abscisa lui a: ")
                Xb = input("Dati abscisa lui b: ")
                Ya = input("Dati ordonarta lui a: ")
                Yb = input("Dai ordonata lui b: ")
                print(distance(Xa, Xb, Ya, Yb))
                cont = input(
                    "Daca doriti sa continuati, apasati y, daca doriti sa iesiti, apasati n"
                )
                if cont == "y":
                    maths()
                elif cont == "n":
                    return 0
                else:
                    input(
                        "Am zis sa APASATI n sau y nu alt ceva! Apasati enter pentru a iesi"
                    )

            else:
                print("Am zix apasati 1 sau 2!")
                retr = input("Reincercati, apasati y, iesiti, apasati n: ").lower
                if retr == "y":
                    maths()
                elif retr == "n":
                    return 0
                else:
                    print("Doamne fereste, apasati enter ca sa iesiti")
                    input("")

        elif ach == 2:
            ah = input(
                "Pentru mijlocul segmentului, 1, pentru aflarea unui punct in functie de celaallt si de mijloc"
            )
            if ah == 1:
                Xa = 0.00
                Xb = 0.00
                Ya = 0.00
                Yb = 0.00
                Xa = input("Xa: ")
                Ya = input("Ya: ")
                Xb = input("Xb: ")
                Yb = input("Yb: ")
                try:
                    print(mij_sgmt(Xa, Xb, Ya, Yb))
                except:
                    ValueError
                print("Doar cifre, nu si litere")
                vr1 = ""
                vr1 = input("Pentru a  reincearca, apasa y, pentru a iesi, apasa n: ")
                if vr1 == "y":
                    Xa = input("Xa: ")
                    Ya = input("Ya: ")
                    Xb = input("Xb: ")
                    Yb = input("Yb: ")
                    print(mij_sgmt(Xa, Xb, Ya, Yb))
                    input("apasat enter ca sa iesiti")
                elif vr1 == "n":
                    print("Bye bye")
                else:
                    print("n/y NU ALT CEVA")
                    input("Apasati ENTER pentru a iesi")
            elif ah == 2:
                Xm = 0.0
                Ym = 0, 0
                Xa = 0.0
                Ya = 0.0
                Xm = input("Abscisa mijlocului: ")
                Ym = input("Ordonata mijlocului: ")
                Ya = input("Ordonata punctului cunoscut: ")
                Xa = input("Abscisa punctului cunoscut: ")
                pct_in_functie(Xm, Ym, Xa, Ya)


print("Buna")
print("Optiuni: ")
maths()

1 Ответ

3 голосов
/ 05 апреля 2020

Ваш if не выполняется. Редактировать: На самом деле он выполняется, но сравнивает неправильные типы переменных, как объяснено ниже:)

    ach = input("pentru distanta 1, penrtru mijloc 2: ") # input is string
    if ach == 1:                                         # Checks for integer

Решения: либо приведите ввод: ach = int(input(..)) Либо сравните АХ со строкой ach == "1".

Ps Хорошая работа: строка "Doamne fereste". Замените его на «Multa bafta pe viitor».

Редактировать: Вам следует также проверить другие места, где вводятся и сравниваются данные, например:

ach = input("pentru distanta 1, penrtru mijloc 2: ")
print(type(ach))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...