我的作业要求我制作一个程序来确定列表中的第一个数字(用户输入,用于演示[4,3,2,5,4] [4,3,2,5,1] )也存在于列表的其余部分。到目前为止,我得到了我的代码打印"是"如果存在重复的数字,但是当没有重复的数字时,它会打印一个空白行。 以下是我到目前为止的情况:
def main():
numbers = eval(input("enter a list of numbers enclosed in brackets: "))
item = numbers
head = item[0]
list = item[1:]
yes = False
count = 0
for i in range(0,len(list),1):
if list[i] == head:
if (item[i] == head):
count +=1
yes = True
if yes == True:
print("yes")
else:
print("no")
main()
答案 0 :(得分:0)
是的很容易。如果您正在查看索引i
并找到该项目,则可以立即打印"是"。
不难。您无法简单地添加else
来打印" no"。要声明搜索失败,您需要知道每个索引都不匹配。你不能只查看一个索引,然后打印" no"。这太快了。
要解决这个问题,在循环内部,您需要跟踪您是否找到了该项目。当循环完成后,您可以检查是否在任何地方找到了该项目。如果你这样做,打印"是"。如果没有,请打印"否"。检查必须在循环之后而不是在循环之内。
答案 1 :(得分:0)
你可以采取一些措施使你的程序变得更冷/ pythonic /可读。
for element in list:
为每个调用for循环,它可以解释为:对于列表中的每个元素,执行(您的程序)。第一次迭代它将是第一个元素,第二个迭代,它将是第二个项目,等等。当前迭代的元素可以被称为变量'element'。
然后您可以将if语句更改为:
if element == head:
我不确定为什么你要将'head'与两个不同的数字列表进行比较,因为你可能只想比较你的变量'list'。
因此,如果一个元素确实等于head,那么该列表确实包含第一个元素/ head,所以yes将等于True。如果在遍历整个列表后没有一个元素等于head,那么,yes将保持初始化值False。那么在循环之外你可以检查变量'yes'的值,它可以打印'yes'或'no'取决于。
另外,为了更清楚,我会将'yes'变量名称更改为更有意义的名称,例如'is_head_in_list'
答案 2 :(得分:0)
以下代码怎么样:
def main():
head = eval(input("enter a first list of numbers enclosed in brackets: "))
tail = eval(input("enter a second list of numbers enclosed in brackets: "))
intersect = set(head) & set(tail)
print('Yes' if intersect else 'No')
和demo的结果:
>>>
>>> main()
enter a first list of numbers enclosed in brackets: [4, 3, 2, 5, 4]
enter a second list of numbers enclosed in brackets: [4, 3, 2, 5, 1]
Yes
>>> main()
enter a first list of numbers enclosed in brackets: [1, 2, 3, 4, 5]
enter a second list of numbers enclosed in brackets: [6, 7, 8]
No
>>>
这里是一个新代码,如果只能是一行输入:
def main():
numbers = input("enter a list of numbers enclosed in brackets: ")
posi = numbers.find(']')
head = eval(numbers[:posi + 1])
tail = eval(numbers[posi + 1:])
#head = eval(input("enter a first list of numbers enclosed in brackets: "))
#tail = eval(input("enter a second list of numbers enclosed in brackets: "))
intersect = set(head) & set(tail)
print('Yes' if intersect else 'No')
和演示:
>>>
>>> main()
enter a list of numbers enclosed in brackets: [4,3,2,5,4][4,3,2,5,1]
Yes
>>> main()
enter a list of numbers enclosed in brackets: [1,2,3][4,5,6,7]
No
>>>
希望,新代码可以帮助你。