Преобразование строки и целого числа в переменную Python - PullRequest
3 голосов
/ 03 апреля 2020

Я сейчас создаю al oop с sikuli. Моя проблема в том, что у меня есть фиксированные переменные, которые будут go до 15 с изменением только числа в конце. Я искал способ объединить строковый компонент, который фиксирован, с целым числом, которое будет переменной в l oop, но затем, после конкатенации, определил его как предопределенную переменную в верхней части кода.

Любая помощь будет потрясающей!

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

Ответы [ 3 ]

3 голосов
/ 03 апреля 2020

Я не уверен, что полностью понимаю ваш вопрос, но я думаю, что вы ищете это:

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)
0 голосов
/ 03 апреля 2020

Я бы порекомендовал вам сделать следующее:

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 веселье c:

n=1 // for example
vars = Variables()
DunningX = getattr(vars,f"Dunning{n}") //DunningX will be equal to Dunning1
0 голосов
/ 03 апреля 2020

Из вашего показанного кода я вижу несколько проблем.

  1. Я предполагаю, что у вас while n < 3 проблема с отступом.

  2. ошибка с (:

DunningX = "Dunning" + str(n)
print(DunningX)
...