我写了一个大约100行的Python程序,它只是没有从某一点运行

2024-10-04 15:33:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了大约100行的程序,其中大部分是在一个大函数中。它有很多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()


Tags: inputreturnifelseprintxmelifya
1条回答
网友
1楼 · 发布于 2024-10-04 15:33:37

您的if没有执行Edit:实际上它确实执行了,但比较了错误的变量类型,如下所述:)

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

解决方案: 强制转换输入:ach = int(input(..)) 将ach与字符串ach == "1"进行比较

附言:干得好:“Doamne fereste”字符串。将其替换为“Multa bafta pe viitor

编辑:您还应检查其他输入和比较的位置,如:

ach = input("pentru distanta 1, penrtru mijloc 2: ")
print(type(ach))

相关问题 更多 >

    热门问题