将字符串和int转换为变量Python

将字符串和int转换为变量Python,python,variables,sikuli-script,Python,Variables,Sikuli Script,我目前正在与sikuli创建一个循环。我的问题是,我有一个固定的变量,它将上升到15,只有数字在最后改变。我正在寻找一种方法来组合字符串组件,该组件固定在整数中,整数将在循环中变为变量,但一旦连接起来,就会在代码顶部将其标识为预定义变量 任何帮助都会很棒 Dunning1 = (Pattern("Line 1.png").similar(0.97).targetOffset(445,-2)) Balance1 = (Pattern("Line 1.png").similar(0.97).targ

我目前正在与sikuli创建一个循环。我的问题是,我有一个固定的变量,它将上升到15,只有数字在最后改变。我正在寻找一种方法来组合字符串组件,该组件固定在整数中,整数将在循环中变为变量,但一旦连接起来,就会在代码顶部将其标识为预定义变量

任何帮助都会很棒

Dunning1 = (Pattern("Line 1.png").similar(0.97).targetOffset(445,-2))
Balance1 = (Pattern("Line 1.png").similar(0.97).targetOffset(566,-2)) 
Select1 = (Pattern("Line 1.png").similar(0.97).targetOffset(38,-1))
Dunning2 = (Pattern("Line 2.png").similar(0.97).targetOffset(442,-1))
Balance2 =(Pattern("Line 2.png").similar(0.97).targetOffset(565,2))
Select2 = (Pattern("Line 2.png").similar(0.97).targetOffset(37,-1))

while n < 3:
    DunningX = ("Dunning"+str(n)**
    print(DunningX)**
    doubleClick(DunningX)
    type("c",KEY_CTRL)
    doubleClick(DunningX)
    type("c",KEY_CTRL)
    Dunning1 = Env.getClipboard()
    BalanceX = ("Balance"+str(n))  
    doubleClick(BalanceX)
    type("c",KEY_CTRL)
    doubleClick(BalanceX)
    type("c",KEY_CTRL)
    ContractBal = Env.getClipboard()
    if Dunning1 == ContractBal:
        SelectX = ("Select"+str(n))  
        click(SelectX)
    n = n + 1
Dunning1=(模式(“Line 1.png”)。类似(0.97)。目标偏移(445,-2))
余额1=(模式(“1.png行”)。类似(0.97)。目标偏移(566,-2))
选择1=(模式(“Line 1.png”)。类似(0.97)。目标偏移(38,-1))
Dunning2=(模式(“Line 2.png”)。类似(0.97)。目标偏移(442,-1))
余额2=(模式(“第2.png行”)。类似(0.97)。目标偏移(565,2))
选择2=(模式(“Line 2.png”)。类似(0.97)。目标偏移(37,-1))
当n<3时:
邓宁x=(“邓宁”+str(n)**
打印(DunningX)**
双击(DunningX)
键入(“c”,按CTRL键)
双击(DunningX)
键入(“c”,按CTRL键)
Dunning1=Env.getClipboard()
余额x=(“余额”+str(n))
双击(平衡)
键入(“c”,按CTRL键)
双击(平衡)
键入(“c”,按CTRL键)
ContractBal=Env.getClipboard()
如果Dunning1==合同余额:
SelectX=(“选择”+str(n))
单击(选择X)
n=n+1

我不确定是否完全理解您的问题,但我认为您正在寻找以下信息:

if some_condition:
    Select1 = "Select"+str(n)
else
    Select2 = "Select"+str(n)
无论如何,请考虑使用一个列表,因为使用单个变量根本不可伸缩。
select = []
select.append(Pattern("Line 1.png").similar(0.97).targetOffset(38,-1))
select.append(Pattern("Line 2.png").similar(0.97).targetOffset(37,-1))
...
if some_condition:
    m=1
else
    m=2
select[m] = 'select'+str(n)

从您显示的代码中,我看到了一些问题

  • 我假设你的
    ,而n<3
    是缩进问题

  • 错误(


  • 我建议您执行以下操作:

    1-将所有变量作为属性添加到类中:

    class Variables:
        def __init__(self):
            self.Dunning1 = (Pattern("Line 1.png").similar(0.97).targetOffset(445,-2))
            self.Balance1 = (Pattern("Line 1.png").similar(0.97).targetOffset(566,-2)) 
    
    2-使用
    getattr
    func按名称动态获取值:

    n=1 // for example
    vars = Variables()
    DunningX = getattr(vars,f"Dunning{n}") //DunningX will be equal to Dunning1
    

    这回答了你的问题吗?
    n=1 // for example
    vars = Variables()
    DunningX = getattr(vars,f"Dunning{n}") //DunningX will be equal to Dunning1