代码不会在函数中运行elif语句

问题描述

我正在制作一个仍处于开发阶段的简单计算器。我还想制作一个音频版本。当然,音频版本要复杂得多,这就是我遇到的大多数问题的地方。如果答案是1位数字,则此特定文件将运行我要播放的音频文件,但不是2位。因此,它将不会在answer_audio()函数内运行elif语句。因为我试图在其中使用打印功能,所以它不会运行整个elif语句,而且也不起作用

这是我播放答案音频文件功能

def answer_audio():
    ans_split = str(answer).split()
    amount = len(ans_split)
    if amount == 1:
        for x in range(10):
            if x == int(ans_split[0]):
                ps(f"Units/{x}.m4a")
    elif amount == 2:
        print("gaming")
        for x in range(10):
            if x == int(ans_split[0]):
                if int(ans_split[0]) == 1:
                    for i in range(10):
                        if i == int(ans_split[1]):
                            ps(f"Teens/1{i}.m4a")
                else:
                    ps(f"Tens/{x}.m4a")
                    if ans_split[1] != 0:
                        ps(f"Units/{ans_split[1]}.m4a")

这是实际的计算器位(您需要在字符之间插入空格,并且无论哪个数字,它都只能用于2个数字)

equation = input("Equation: ")

cal = equation.split()

if cal[1] == "x" or cal[1] == "X":
    answer = (int(cal[0]) * int(cal[2]))
    print(answer)
    answer_audio()

elif cal[1] == "-":
    answer = (int(cal[0]) - int(cal[2]))
    print(answer)

elif cal[1] == "+":
    answer = (int(cal[0]) + int(cal[2]))
    print(answer)

elif cal[1] == "/":
    answer = (int(cal[0]) / int(cal[2]))
    print(answer)

解决方法

如果answer是整数,则str(answer).split()将与[str(answer)]相同,因为没有任何参数的str.split()将在空格上分开。

如果您想对数字进行计数,可以只使用len(str(answer)),或者如果以后想要一些其他操作的数字列表,则可以传递str(已经可以迭代)这样list()ans_split = list(str(answer))