如果在python中声明,if语句将不接受变量'a'和'b'的情况

时间:2018-11-10 03:45:42

标签: python

我一直很好奇如何简化我的工作。但是现在,我的     问题是如何通过函数传递变量并获得     工作声明。变量a和b需要传递给if     用于检查字符串是否在数组“ colors”中的语句或     'other_colors'

import random;
hot_spot=0;
colors = ['R','G','B','O','P']
other_colors =['RED','GREEN','BLUE','ORANGE','PURPLE']
guesser_array=[]


def code_maker():
    code_maker_array=[]
    for i in range(4):
        ran = random.randint(0,4)
        print (ran)
        code_maker_array.append(colors[ran])
        print(code_maker_array)
    return code_maker_array
x = code_maker()


def code_breaker():
    trys = 0;
    cbi = input('please put in r,g,b,o,p or red,green,blue,orange,purple_ ')
    cbi = cbi.upper()
    if ( isinstance(cbi,str) == True):
        print ('it is a string')
        print (cbi)
        for i in range(4):
            if (len(cbi)>=3):
                a = other_colors[i].find(cbi)
            else:
                b = colors[i].find(cbi)
            if (a >= 0 or b >= 0):
                print ('yummmeiabui aebfiahfu dsdsde')

y = code_breaker()


"""
def code_checker(x):
    print (x)

code_checker(x)
"""

2 个答案:

答案 0 :(得分:0)

删除整个代码段

 for i in range(4):
            if (len(cbi)>=3):
                a = other_colors[i].find(cbi)
            else:
                b = colors[i].find(cbi)
            if (a >= 0 or b >= 0):
                print ('yummmeiabui aebfiahfu dsdsde')

只需添加

  if( (cbi in other_colors) or (cbi in colors) ):
     print ('yummmeiabui aebfiahfu dsdsde')

答案 1 :(得分:0)

尝试一下:

import random

hot_spot=0
colors = ['R','G','B','O','P']
other_colors =['RED','GREEN','BLUE','ORANGE','PURPLE']
guesser_array=[]


def code_maker():
    code_maker_array=[]
    for i in range(4):
        ran = random.randint(0,4)
        print (ran)
        code_maker_array.append(colors[ran])
        print(code_maker_array)
    return code_maker_array
x = code_maker()


def code_breaker():
    trys = 0;
    cbi = input('please put in r,g,b,o,p or red,green,blue,orange,purple_ ')
    cbi = cbi.upper()
    if ( isinstance(cbi,str) == True):
        print ('it is a string')
        print (cbi)
        for i in range(4):
            a=b=0                   #This line added
            if (len(cbi)>=3):
                a = other_colors[i].find(cbi)
            else:
                b = colors[i].find(cbi)
            if (a >= 0 or b >= 0):
                print ('yummmeiabui aebfiahfu dsdsde')

y = code_breaker()


"""
def code_checker(x):
    print (x)

code_checker(x)
"""

您定义的变量ab一旦它们各自的if块结束,就会超出范围。为防止这种情况,您可以通过在if语句之外将它们初始化为0(或任何其他值)来简单地定义它们。

尽管Lucefer的答案简化了很多代码,但我还是添加了这点,因为在这样的外部范围内定义变量并在以后修改它们的值(在您的if块中)是一种很常见的做法,您可能会发现它很有用还有其他地方。