我将尽力解释这一点,而不会给出太多关于我要做什么的细节。
我有一个网站Website1
,其产品x
的值为1
我有另一个网站Website2
,其产品x
的产品价值为2。
乘积“ x”具有两个需要配对的值。使用元组会发生这种情况吗?
x = [1, 2]
在Website2
上,我需要循环检查一个订单项列表。当它在元组中找到产品x
并与来自Website1
的连接值2相匹配时,我需要执行一个函数来更改实现值,然后移至下一个订单项以执行下次检查。这是我到目前为止的内容,我甚至不确定逻辑是否接近。
x = [1, 2]
if Website1 == x:
LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
time.sleep(2)
LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys("1")
else:
LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
time.sleep(2)
LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys("0")
答案 0 :(得分:2)
是的,您可以轻松地使用元组为变量分配两个值(整个元组都被分配给变量):
x = (val1, val2)
x[0] == val1 # True
x[1] == val2 # True
旁注:
[]
定义一个列表,而不是一个元组。后者是前者的不变变体
答案 1 :(得分:0)
您应该使用元组。
x = (1, 2)
只需从元组中获取值,即可:
x[0]
获取第一个值,x[1]
获取下一个值,依此类推。
答案 2 :(得分:0)
myValues = (a, b, c)
这将创建一个元组,您可以在其中存储多个值。
要获取不同的值,例如,使用myValues[0]
获取第一个元素。
答案 3 :(得分:-1)
您可以使用元组,但不必这样做。这只是做到这一点的一种方法。您在[]
中所拥有的是一个数组。您也可以使用它,如果您添加了Third +网站,则无需更改数据结构,只需添加一个新值,例如x = [1, 2, 3]
,因此拥有数组使得与元组相比更容易在以后扩展。
现在输入代码。在没有更多解释的情况下很难理解您的逻辑,但这应该可以解决您的问题(并简化您的代码)。
您将注意到if
和else
块基本上具有相同的代码。唯一的区别是send_keys()
中的“ 1”与“ 0”。您应该阅读Rails: update_column works, but not update_attributes和DRY练习,但核心概念是“不要重复自己”。将重复的行拉出到名为set_fulfillment_value()
的方法中(您可能想给它一个更合适的名称)。
def set_fulfillment_value(value)
LineItem.find_element_by_xpath('./td[4]/div/div/input').clear()
# time.sleep(2) # this is a bad practice and should be removed (it likely isn't needed here anyway)
LineItem.find_element_by_xpath('./td[4]/div/div/input').send_keys(value)
使用if
设置要发送的值,然后将其传递给方法。
x = [1, 2]
value = None
if Website1 == x[0]:
value = "1"
else:
value = "0"
set_fulfillment_value(value)
注意:我知道命名很困难,但是您应该使用更好的变量名。 Website1
听起来更像是product
之类的名字?另外,LineItem
也不是python-y。 line_item
可能会更好。