python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个

一、编程题目

        python找出所有重复数字的三位数(如110)注意重复数字(如111除外) ​要求打印所有满足条件的三位数及个数,每行打印五个。


二、实现思路

        要实现判断数字是否重复,脑袋里的第一反应就是使用循环,当时数字本身是不能循环的,因此需要将数字转为字符串,然后将字符串当成字符串数组进行循环,而且需要使用到双层循环,因为需要判断数字中的每一位是否跟数字中的其他位有重复,取数字中的每一位需要一个循环,跟数字中的其他位比较时,需要一个循环。

        还有一种实现思路就是,利用列表的count方法,可以计算某位元素在列表中的数量,从而判断是数字中是否有重复数字,某位数字的数量为2说明该数字中有重复数字,注意题目要求三位相同的数字除外。

       最后一种实现思路就是使用集合set的概念,我们都知道集合中是不能存在重复元素的,因此我们可以将字符串转为集合,由于集合不允许存在重复的元素,集合会自动把重复的元素去掉。因此,如果之后集合的大小和之前的大小是一样的,说明没有重复元素,如果小于之前的大小,说明存在重复元素。这是最简答的一种方法。

   


三、代码实现

        1、基于以上分析的第一种思路,使用双层循环实现

def is_repeat(num):
    num = str(num)
    count = 1 #记录重复次数
    for i in range(len(num)):
        for j in range(i+1,len(num)):
            if num[i] == num[j]:
                count+=1

    if count==2:
        return  True
    else:
        return False

   以上定义了一个判断是否有重复数字的函数,其中定义了一个count变量,目的就是为了统计重复数字的个数,因为题目要求不能三个数字重复,所以当count的值为2也就表示有2个数字重复了。

2、基于以上分析的第二种思路,使用列表的count方法实现。   此时只需要一个循环即可

def is_repeat(num):
    num = str(num)

    for i in range(len(num)):
        if num.count(num[i])==2:
            return True
            break
    else:
        return False

  其中使用到for else语句结构。当for循环中没有执行break语句则执行else部分的代码,否则不执行else部分的代码。

3、基于第三种思路实现,利用集合去重的功能,判断去重前后字符串长度的变化来判断是否有数字重复。

def is_repeat(num):
    num = list(str(num))#转为字符串类型的列表
    numset = set(num)#由列表转set ,set遇到重复的数字会自动去重

    if len(num)-len(numset)==1: #如果去重后的字符串长度比去重前的长度少一位,表示有2个数字重复
        return True
    else:
        return False

 如果去重后的字符串长度比去重前的长度少一位,表示有2个数字重复,刚好去掉了一个重复的,所以长度相差1。
哈哈,怎么样,发现这个方法是最简单了吧。所以在写程序前一定要先思考再动手。

4、主函数,调用之前的方法,循环判断所有的三位数是否有重复数字,有的话就打印出来,5个一行

if __name__ == '__main__':
    count = 0  # 计数器,用于每行打印五个数字
    for n in range(100,1000):
        if is_repeat(n):
            print(n, end=' ')
            count += 1
            if count % 5 == 0:  # 每行打印五个数字
                print()

四、测试结果

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个_第1张图片

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个_第2张图片

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个_第3张图片

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个_第4张图片

python找出所有重复数字的三位数(如110)注意重复数字(如111除外) 要求打印所有满足条件的三位数及个数,每行打印五个_第5张图片

你可能感兴趣的:(python常用项目源码合集,python,重复,数字,三位,打印)