发生了什么?Python函数跳过行情况
当我在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)
。