Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 比较两个字符串变量,如果它们相同,则执行某些操作_Python_String_Variables_Python Imaging Library_Rgb - Fatal编程技术网

Python 比较两个字符串变量,如果它们相同,则执行某些操作

Python 比较两个字符串变量,如果它们相同,则执行某些操作,python,string,variables,python-imaging-library,rgb,Python,String,Variables,Python Imaging Library,Rgb,我希望比较Python中的两个字符串变量,如果它们相同,则打印same。不幸的是,我不能让它工作,相同的永远不会被打印出来。我的一个字符串只是一个简单变量,而另一个是来自ImageGrab模块的RGB输出 代码如下: from PIL import ImageGrab import threading cc = "(255, 255, 255)" def getcol(): global pxcolor threading.Timer(0.5, getcol).start()

我希望比较Python中的两个字符串变量,如果它们相同,则打印
same
。不幸的是,我不能让它工作,
相同的
永远不会被打印出来。我的一个字符串只是一个简单变量,而另一个是来自
ImageGrab
模块的RGB输出

代码如下:

from PIL import ImageGrab
import threading

cc = "(255, 255, 255)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)
            if pxcolor == cc:
                print("same")

getcol()
我已尝试使用
pxcolor=pxcolor.strip()
,但返回了以下错误:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "C:\Users\mikur\Python\Python37-32\lib\threading.py", line 917, in _bootstrap_inner
    self.run()
  File "C:\Users\mikur\Python\Python37-32\lib\threading.py", line 1158, in run
    self.function(*self.args, **self.kwargs)
  File "C:\Users\mikur\Desktop\tye.py", line 14, in getcol
    pxcolor = pxcolor.strip()
AttributeError: 'tuple' object has no attribute 'strip'

只需通过str()将pxcolor转换为字符串即可进行比较

from PIL import ImageGrab
import threading

cc = "(45, 42, 46)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=str(pixel[x,y])
            print(pxcolor)
            if pxcolor == cc:
                print("same")

getcol()
根据Kevin的建议,在开始时将cc变量设置为元组

from PIL import ImageGrab
import threading

cc = (45, 42, 46)

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)
            if pxcolor == cc:
                print("same")

getcol()

只需通过str()将pxcolor转换为字符串即可进行比较

from PIL import ImageGrab
import threading

cc = "(45, 42, 46)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=str(pixel[x,y])
            print(pxcolor)
            if pxcolor == cc:
                print("same")

getcol()
根据Kevin的建议,在开始时将cc变量设置为元组

from PIL import ImageGrab
import threading

cc = (45, 42, 46)

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)
            if pxcolor == cc:
                print("same")

getcol()

cc是str,pxcolor是tuple

您需要将cc更改为元组,或将pxcolor更改为字符串,然后检查
=
语句:

字符串的元组

from PIL import ImageGrab
import threading

cc = "(255, 255, 255)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)
            if str(pxcolor) == cc:
                print("same")
将字符串转换为元组

from PIL import ImageGrab
import threading


cc = "(255, 255, 255)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)

            elements = cc[1:-1].split(",")
            tuple_cc = [ int(x) for x in elements ]
            mytuple = tuple(tuple_cc) 

            if pxcolor == mytuple:
                print("same")

cc是str,pxcolor是tuple

您需要将cc更改为元组,或将pxcolor更改为字符串,然后检查
=
语句:

字符串的元组

from PIL import ImageGrab
import threading

cc = "(255, 255, 255)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)
            if str(pxcolor) == cc:
                print("same")
将字符串转换为元组

from PIL import ImageGrab
import threading


cc = "(255, 255, 255)"

def getcol():
    global pxcolor
    threading.Timer(0.5, getcol).start()
    pixel=ImageGrab.grab((960,540,961,541)).load()
    for y in range(0,1,1):
        for x in range(0,1,1):
            pxcolor=pixel[x,y]
            print(pxcolor)

            elements = cc[1:-1].split(",")
            tuple_cc = [ int(x) for x in elements ]
            mytuple = tuple(tuple_cc) 

            if pxcolor == mytuple:
                print("same")

我不熟悉这个库,但是你确定pxcolor是字符串吗?您能用
类型(pxcolor)
检查一下吗?它看起来可能是一个元组。pxcolor是一个元组(错误消息非常清楚)。你的比较永远不会是真的。请尝试
cc=(255、255、255)
(将其声明为元组,而不是字符串)。或者是另一种方式:
如果str(pxcolor)==cc:
是的,很抱歉新手犯了错误。我不熟悉这个库,但你确定pxcolor是字符串吗?您能用
类型(pxcolor)
检查一下吗?它看起来可能是一个元组。pxcolor是一个元组(错误消息非常清楚)。你的比较永远不会是真的。请尝试
cc=(255、255、255)
(将其声明为元组,而不是字符串)。或者(跛脚的)另一种方式:
如果str(pxcolor)==cc:
是的,为新手的错误感到抱歉。最好让
cc
首先与
pxcolor
的类型相同,而不是转换
pxcolor
以匹配
cc
的类型。物体的类型应反映其用途;元组比字符串更接近于颜色。与其转换
pxcolor
以匹配
cc
的类型,不如让
cc
pxcolor
的类型相同。物体的类型应反映其用途;元组比字符串更接近颜色。我喜欢将cc更改为元组的想法。但是首先简单地执行
cc=(255,255,255)
不是比在运行时调用
split
tuple()
更容易吗?是的。打得好,凯文。显然,如果可以直接将cc作为元组,那将是理想的。但我不知道Mihkel读的cc是什么。因此,他只是提供了两种方法,让他的代码在cc是字符串的情况下工作。我喜欢将cc改为元组的想法。但是首先简单地执行
cc=(255,255,255)
不是比在运行时调用
split
tuple()
更容易吗?是的。打得好,凯文。显然,如果可以直接将cc作为元组,那将是理想的。但我不知道Mihkel读的cc是什么。因此,他只是提供了两种方法,让他的代码在cc是字符串的情况下工作