2014-02-19 21 views
0

我的代码工作第一个输入,但现在我想重新提示输入自己的用户,直到用户输入“一站式”重复这个过程。我已经尝试将我的代码放在另一个while循环中,创建一个不同的函数定义并将代码放入现有的if语句中。 这里是我到目前为止的代码:蟒蛇用户连续输入提示,直到进入某个单词

def findInfo(myList, target): 
    list.sort(myList) 
    #print myList, target 
    guesses = 0 
    low = 0 
    high = len(myList)-1 
    mid = (high + low)/2 
    while high >= low: 
     if target == myList[mid][0]: 
      print "Here are your results:" 
      print 'state:', myList[mid][0] 
      print 'total number:', myList[mid][1] 
      print '% passed:', myList[mid][2] 
      print '% female students:', myList[mid][3] 
      return True    
     elif target > myList[mid][0]: 
      low = mid + 1 
      guesses += 1 
      print "guess", guesses 
     elif target < myList[mid][0]: 
      high = mid - 1 
      guesses += 1 
      print "guess", guesses 
     mid = (high + low)/ 2 
    print False, "no match found" 
    return False 

我只是真的很困惑在哪里把代码中输入再次要求输入用户直到某个词。

+0

我知道代码没有缩进函数定义之后,但刚刚发生在我复制我的代码时。这不是在我的Python工作区。 – user3212405

+0

你从哪里得到第一个输入? –

+0

你在哪里输入?我没有看到你问用户什么。最初的提示在哪里? – Hoopdady

回答

1

你可以使用cmd lib中,类似的事情:

import cmd 


class myApp(cmd.Cmd): 

    def do_findInfo(self,target, myList = defaultList): 
     list.sort(myList) 
     #print myList, target 
     guesses = 0 
     low = 0 
     high = len(myList)-1 
     mid = (high + low)/2 
     while high >= low: 
      if target == myList[mid][0]: 
       print "Here are your results:" 
       print 'state:', myList[mid][0] 
       print 'total number:', myList[mid][1] 
       print '% passed:', myList[mid][2] 
       print '% female students:', myList[mid][3] 
       return True    
      elif target > myList[mid][0]: 
       low = mid + 1 
       guesses += 1 
       print "guess", guesses 
      elif target < myList[mid][0]: 
       high = mid - 1 
       guesses += 1 
       print "guess", guesses 
      mid = (high + low)/ 2 
     print False, "no match found" 
     return False 

     def do_EOF(self, line): 
      return True 

if __name__ == '__main__': 
    myApp().cmdloop() 

这会告诉你,你需要输入命令行:“findInfo目标”

1

为什么就不能做某事。像这样:

def term(s): 
    return s in ['stop', 'exit', 'quit'] 

if __name__=='__main__': 
    inp = '' 
    while not term(inp): 
     inp = raw_input('prompt: ') 
     if not term(inp): 
      try: 
       i = int(inp) 
       print(findInfo(myList, i)) 
      except ValueError as e: 
       print('Invalid input: {}'.format(e.message))