提问人:stuck overflawed 提问时间:11/3/2022 更新时间:11/3/2022 访问量:62
在一个序列中,如何比较两个添加的变量?
in a sequence, how to compare two added variables?
问:
问题更具体。 在给定的列表序列中。我要比较的数字是一个变量(我们称之为当前变量)和当前变量之前的变量(我们称之为变量之前)。这意味着,如果当前变量的索引为 1,则 before 变量为 0。 但我希望当前变量的索引将是列表中的最后一个变量。此外,“当前变量”由用户输入给出。 输入在循环中运行,因此不断有新的“列表中的最后一个变量”。因此,我总是需要比较新变量。 最终,在能够比较这些变量之后,我想比较它们的值。 如果它们的值相等,则程序执行某些操作,否则程序会照常继续。
这里的问题是,我正在为如何比较这些变量而苦苦挣扎。 虽然我并没有为比较他们的价值观而苦苦挣扎。
我写了两个不同的脚本,在尝试解决上述问题时,在两个脚本中我遇到了不同的问题。
第一个:
list_= []
n = 0
loop = True
while(loop == True):
current_variable = input("what is your current variable?")
if(list_[n]==list_[n+1]):
print("the two values are equal")
else:
list_.append(current_variable)
n = n+1
在这里我收到一个错误“列表索引超出范围”。我明白了这个问题,并创建了一个新脚本: 在列表中,我添加了变量。 对脚本的唯一更改是:
list_= ["solving the problem", "again solving the problem"]
在这里我遇到了一个问题,由于某种原因,消息“两个值相等”仅在第三次输入后打印,或者当输入仅在第二次输入后“再次解决问题”时打印。 为什么是第三个??
答:
你的程序有很多问题,很难知道从哪里开始。
如果您只是在列表的末尾添加内容或处理列表的最后一个元素,则不需要索引。n
你可以是,因为你从不改变.while
while True:
loop
您正在尝试比较列表中的最后两项: ,但忽略了用户输入的新项。您应该与列表的末尾进行比较。list_[n]==list_[n+1]
current_variable
此外,您不会对列表执行任何操作,因此我的程序只是打印列表,以便您可以知道它在做什么。
list_ = []
while True:
print(list_)
current_variable = input("what is your current variable?")
if not list_ or list_[-1] != current_variable:
list_.append(current_variable)
continue
print("the two values are equal")
生产线:将两个步骤合二为一。检查列表是否为空。如果是,则允许您不加检查地将其添加到列表中。否则,它会将最后一项与 进行比较,如果它们不同,您可以将其添加到 .if not list_ or list_[-1] != current_variable:
not list_
current_variable
current_variable
list_
评论
list_[-1]
始终是列表中的最后一个元素,并且始终是最后一个元素之前的元素(当然,假设它们存在)。list_[-2]