【问题标题】:Duplicate numers in pythonpython中的重复数字
【发布时间】:2014-07-20 20:35:25
【问题描述】:

编写一个python程序。所有相邻的重复项。例如,如果输入是 1 3 3 4 5 5 6 6 6 2, 程序应该打印 3 5 6。

这是我目前所拥有的:

print("Take out repeating numbers")

def main():

    a = int(input("Enter a number: "))
    b = int(input("Enter a number: "))
    c = int(input("Enter a number: "))
    d = int(input("Enter a number: "))
    e = int(input("Enter a number: "))
    f = int(input("Enter a number: "))
    g = int(input("Enter a number: "))

    if a == a: 
        print(a)
    elif a == b:
        print(a)
    elif a == c:
        print(a)
    elif a == d:
        print(a)
    elif a == e:
        print(a)
    elif a == f:
        print(a)
    else:
        print(a)

    if b == a:
        print(b)
    elif b == b:
        print(b)
    elif b == c:
        print(b)
    elif b == d:
        print(b)
    elif b == e:
        print(b)
    elif b == f:
        print(b)
    else:
        print(b)

    if c == a:
        print(c)
    elif c == b:
        print(c)
    elif c == c:
        print(c)
    elif c == d:
        print(c)
    elif c == e:
        print(c)
    elif c == f:
        print(c)
    else:
        print(c)
        '''
    if d == a or d == b  or d == c or d == d or d == e or d == f or d == g:
        print(d)
    if e == a or e == b  or e == c or e == d or e == e or e == f or e == g:
        print(e)
    if f == a or f == b  or f == f or f == d or f == e or f == f or f == g:
        print(f)
    if g == a or g == b  or g == c or g == d or g == e or g == f or g == g:
        print(g)    
    '''

    print("The repeating numbers are: " , a, b, c, d, e, f, g,)

main()

它只是打印出所有输入

【问题讨论】:

  • 你可能想看看循环..
  • 列表切片也会对你有所帮助(假设你重组了你持有价值观的方式)。 nums[0:2] -> 列表前面的两个元素。
  • 因为a == ab == b 总是True,所以会打印整个列表。

标签: python python-3.2


【解决方案1】:

使用itertools 模块中的groupby() 函数尝试这一行list comprehension

import itertools as it

lst = [1, 3, 3, 4, 5, 5, 6, 6, 6, 2]

[k for k, v in it.groupby(lst) if len(list(v)) > 1]
=> [3, 5, 6]

【讨论】:

    【解决方案2】:
    input_set = []
    input_num = 0
    
    while (input_num >= 0):
    
        input_num = int(input("Please enter a number or -1 to finish"))
        if (input_num < 0):
            break
        input_set.append(input_num)
    
    print(input_set)
    
    dup = 0
    new_list = []
    unique_list = []
    
    for i in range(0,len(input_set)-1):
        if input_set[i]==input_set[i+1] or input_set[i] == input_set[i-1]:
            new_list.append(input_set[i])
    
    [unique_list.append(item) for item in new_list if item not in unique_list]
    print(unique_list)
    

    【讨论】:

    • 鉴于这个问题看起来像家庭作业,请补充一下你是如何解决这个问题的。
    【解决方案3】:

    我的回答可能为时已晚。但是,对于这个问题.. 您可以使用布尔值和 while 循环语句中的 if 语句检索重复的相邻数字,如下代码所示。

    首先将布尔状态设置为 True。

    在你的while语句中,如果输入的数字大于0,继续执行if语句,你需要检查状态是否为False,以及下一个数字是否与前一个数字相同。然后检索相邻的数字,但确保在与其他相邻数字连接之前将其转换为字符串。

    count = 0
    previous = 0
    duplicate = ""
    
    num = int(input("\nPlease enter a number or -1 to finish : "))
    previous = num
    status = True
    
    while num >= 0.0:
        # determine the adjacent duplicates
        if not status and num == previous:
            duplicate = duplicate + " " + str(num)
            print(duplicate)
    
        status = False
        previous = num
        count = count + 1
        num = int(input("Please enter a number or -1 to finish : "))
    
    if count > 0:
        print(duplicate)
    else:
        print("Finish")
    

    希望我的代码可以帮助你。其他人,请随时批评和升级我的代码以供其他人参考。

    【讨论】:

      猜你喜欢
      • 2011-03-26
      • 2021-12-11
      • 2021-04-03
      • 2018-09-26
      • 2023-02-17
      • 1970-01-01
      • 2016-05-26
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多