微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决代码不会在函数中运行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))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。