基本python条件检查输入,始终设置为1的输入

时间:2012-06-28 16:36:17

标签: python eclipse pydev

编辑: 我正在尝试针对允许的输入数组检查用户输入以获取if语句来执行,如果输入'y' or 'yes' or 1代码将运行,这很简单,我想我使用了错误的结构。 :(

我有一段非常简单的代码,用于针对预定义数组中的多个可能条件运行用户输入:

from spiders import test

run_test_spider = 0
condition = [1, 'yes', 'Yes', 'YES', 'y', 'Y']
x=-1
def spiders():

    for run_test_spider in condition:
        global x
        x=x+1
        if run_test_spider == condition[x]:
            test.main()
            print 'gotcha!'
        print 'running.......'
    print run_test_spider
    print 'hello'



print 'hello would you like to run a test spider?'
print '1,yes,y = Yes I do!!!'
print '0,no,n  = Nope!'
run_test_spider = raw_input(': ')

spiders()

我在eclipse中运行调试器(pydev),一旦我输入字符串n以获得失败的条件检查,调试器告诉我输入自动变为1,这导致代码总是执行蜘蛛

有谁知道为什么我的输入都变为1

这个1业务是eclipse在其变量字段中显示的内容,当我输入输入时(一旦我将调试器调到那一点)

控制台也吐出这个:当我在调试期间输入输入时:

Traceback (most recent call last):
  File "C:\Program Files\eclipse\plugins\org.python.pydev.debug_2.5.0.2012040618\pysrc\pydevd_comm.py", line 755, in doIt
    result = pydevd_vars.evaluateExpression(self.thread_id, self.frame_id, self.expression, self.doExec)
  File "C:\Program Files\eclipse\plugins\org.python.pydev.debug_2.5.0.2012040618\pysrc\pydevd_vars.py", line 384, in evaluateExpression
    result = eval(compiled, updated_globals, frame.f_locals)
  File "<string>", line 1, in <module>
NameError: name 'n' is not defined

2 个答案:

答案 0 :(得分:2)

for run_test_spider in condition:

表示将使用条件中的每个元素初始化run_test_spider。 因此,您实际上检查condition中的每个项目是否都在其中......

编辑:这是你的支票:

condition = [1, 'yes' 'y']

def spiders():

    if run_test_spider.lower() in condition:
        test.main()
        print 'gotcha!'

答案 1 :(得分:1)

  1. 您不会将用户的输入发送到您要使用它的命令。要使用它,请将run_test_spider作为spider命令的输入传递,并声明命令接受输入

  2. 不要在for循环中重新分配run_test_spider。

  3. 要方便地检查项目是否在列表中,您只需使用构造if a in b: <do something>

  4. 最后,正如@Tisho指出的那样,raw_input会返回一个字符串,因此请在代码中为1添加一个字符串:'1'

  5. 因此,代码变为:

    condition = ['1','yes','Yes','YES','y','Y']

    def spider(run_test_spider):
       if run_test_spider in conditions:
                # do something
       else:
                # do something else
    
    run_test_spider = raw_input(':')
    spider(run_test_spider)