发生了什么?Python函数跳过行情况

-3 投票
4 回答
4194 浏览
提问于 2025-04-17 01:10

当我在Python中运行以下程序时,函数接收了变量,但完全跳过了后面的部分,重新显示了程序的主菜单,什么也没做。而且,它跳过了那些“如果”判断语句,无论选择第一个还是第二个选项(这两个选项都不需要第三个变量),它都会要求输入所有变量。顺便说一下,这应该不是缩进错误,我只是缩进了代码,以便在stackoverflow中显示。

补充:算了,我搞定了。函数括号里的变量必须是一样的。真是的!拍额头

option = 1
while option !=0:
    print "\n\n\n************MENU************"
    print "1. Counting"
    print "2. Fibbonacci Sequence"
    print "0. GET ME OUTTA HERE!"
    print "*" * 28
    option = input("Please make a selection: ") #counting submenu
    if option == 1:

        print "\n\n*******Counting Submenu*******"
        print "1. Count up by one"
        print "2. Count down by one"
        print "3. Count up by different number"
        print "4. Count down by different number"
        print "*" * 28
        countingSubmenu = input("Please make a selection: ")
        x=0
        y=0
        z=0
        q=0
        def counting (x, y, z, countingSubmenu, q):
            x = input("Please choose your starting number: ")
            y = input("Please choose your ending number: ")
            if countingSubmenu == 1:
                for q in range (x, y+1, 1):
                    print q
            elif countingSubmenu == 2:
                for q in range (x, y, -1):
                    print q
            elif countingSubmenu == 3:
                z = input("Please choose an increment: ")
                for q in range (x, y+1, z):
                    print q
            else:
                z = input("Please choose an increment: ")
                for q in range (x, y, -z):
                    print q
            return x, y, z, q
        if countingSubmenu == 1:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 2:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 3:
            counting(countingSubmenu, x, y, z, q)
        if countingSubmenu == 4:
            counting(countingSubmenu, x, y, z, q)

4 个回答

3

这段代码在 Python 2.7 中似乎可以正常工作(可以参考 Chris Phillips 的回答)。

不过,你可以做一些改进:

  • counting 这个函数放到循环外面。
  • 你不需要调用 counting 四次,只需调用一次 counting(countingSubmenu, x, y, z, q) 就可以了。
  • counting 函数的参数顺序不对,你传递的顺序是错的。
  • 你不需要把 x、y、z 传进去,因为这些是从用户那里获取的。
3

你没有提到你使用的是哪个版本的Python,但我猜应该是3.x系列的。Python 3对input()的行为进行了改变,现在它的功能和之前2.x系列中的raw_input()一样。

所以,现在input()总是返回一个字符串。这意味着你需要对结果使用int()或者eval()(我个人建议使用int())。

5

你的函数是这样定义的:counting (x, y, z, countingSubmenu, q),但是当你调用这个函数时,你传入的参数顺序是counting(countingSubmenu, x, y, z, q)

撰写回答