为什么我的功能不起作用?

时间:2015-10-28 15:27:34

标签: python function python-2.7

当我在python-2.7中编写这段代码时,我收到了一遍又一遍的消息,有人可以告诉我它有什么问题吗?

num = raw_input("enter your number : ")

def calc():
    if num == "1":
        print "ok"
    else:
        print "right"
    calc()

calc()  

反复打印okright

那么如果我想在每次打印后回到初始状态(要求输入),我该怎么办?

2 个答案:

答案 0 :(得分:2)

它正在重复,因为你在calc()函数内再次调用calc(),使其成为无限循环。

def calc():
    if num == "1":
        print "ok"
    else:
        print "right"
    calc()  # <-- Why is this here?
  

那么如果我想在每次打印后回到初始状态(要求输入),我该怎么办?

然后你需要在循环中再次询问输入:

def calc():
    num = raw_input("enter your number : ")
    if num == "1":
        print "ok"
    else:
        print "right"
    calc()

calc() 

答案 1 :(得分:1)

如果一遍又一遍地调用相同的函数,迟早会出现堆栈溢出。为了无限期地重复某些事情,请使用循环,例如forwhile

def calc():
  while True:
    num = raw_input("enter your number : ")
    if num == "1":
      print "ok"
    else:
      print "right"

calc()

您还应该考虑添加一个退出循环的条件。例如,检查输入是"q"然后执行break

  while True:
    num = raw_input("enter your number : ")
    if num == "q":
      break
    elif num == "1":
      print "ok"
    else:
      print "right"