Python100道经典练习题:第1题 输出不同的三位数问题

Python100道经典练习题
第一题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
分析:可以用for的多重循环。可以在循环里面找出不符合要求的数。也可以在循环开始前删掉已经用过的数。

# -*- coding: utf-8 -*-
import time

nums = [1,2,3,4,5,6,7]
#方法一
def forall(nums):
    Tsum = 0
    for i in nums:
        for j in nums:
            if j != i:
                for k in nums:
                    if k != i and k != j:
                        Tsum += 1
#                        print(i,j,k)
#    print(Tsum)

#方法二
def forpop(list):
    Tsum = 0
    for i in nums:
        num_1 = nums.copy()             #需要用深拷贝,否则会出错
        num_1.remove(i)
        for j in num_1:
            num_2 = num_1.copy()
            num_2.remove(j)
            for k in num_2:
                Tsum += 1
#                print(i,j,k)
#    print(Tsum)
'''测试两种方法的效果'''
start = time.time()
for n in range(100000):
    forall(nums)
end = time.time()
print('全循环耗时:',end - start)

start = time.time()
for n in range(100000):
    forpop(nums)
end = time.time()
print('部分循环耗时:',end - start)

结果分析:
1.如果输入的num=[1,2,3,4],第一种方法耗时约1.20s,第二种耗时约1.37s。
2.如果输入改成num=[1,2,3,4,5,6,7],第一种方法耗约8.10s,第二种耗时约7.23s。

发布了46 篇原创文章 · 获赞 1 · 访问量 1560

猜你喜欢

转载自blog.csdn.net/AntInSnow/article/details/104899625