【python学习】枚举算法案例分析-创新互联

《中学生可以这样学Python》P176-180

创新互联公司主营连云港网站建设的网络公司,主营网站建设方案,成都App定制开发,连云港h5小程序制作搭建,连云港网站营销推广欢迎连云港等地区企业咨询
输出由1 2 3 4 这4个数字组成的每位上的数字都不同的所有三位数
#枚举算法案例分析
## 输出由1 2 3 4 这4个数字组成的每位上的数字都不同的所有三位数
from itertools import permutations
def demo(digits,num):
    for item in permutations(digits,num):
        print(int(''.join(map(str,item))),end=',')
demo((1,2,3,4),3)
编写函数 接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数,输出所有符合条件的素数
#编写函数 接收一个正偶数为参数,输出两个素数,并且这两个素数之和等于原来的正偶数,输出所有符合条件的素数
def IsPrime(p):
    if p==2:
        return True
    if p%2==0:
        return False
    for i in range(3,int(p**0.5)+1,2):
        if p%i==0:
            return False
    return True
def demo(n):
    if isinstance(n,int) and n>0 and n%2==0:
        for i in range(2,n//2+1):
            if IsPrime(i) and IsPrime(n-i):
                print('{}+{}={}'.format(i,n-i,n))
demo(30)
编写程序 输出所有3位水仙花数
## 编写程序 输出所有3位水仙花数
for i in range(100,1000):
    bai,shi,ge=map(int,str(i))
    if ge**3+shi**3+bai**3==i:
        print(i)
编写程序 寻找指定位数的黑洞数
##编写程序 寻找指定位数的黑洞数
def main(n):
    start=10**(n-1)
    end=10**n
    for i in range(start,end):
        big=''.join(sorted(str(i),reverse=True))
        little=''.join(sorted(str(i),reverse=False))
        big,little=map(int,(big,little))
        #big,little=int(big),int(little)
        if big-little==i:
            print(i)
main(4)   
啤酒问题
## 啤酒问题 5桶葡萄酒和1桶啤酒 6个桶的容量分别为30 32 36 38 40 62升。并且只卖整桶酒 不零卖。
#第一位顾客买走2整桶葡萄酒 第二位顾客买走的葡萄酒是第一位顾客的2倍 那么本来有多少啤酒呢
#分析,顾客1买走2桶,顾客2至少买3桶,共只有5桶葡萄酒,所以顾客2只可能买3桶,所以啤酒就1桶
#分析,顾客1买L升,顾客2买2L升,一共3L升。
buckets={30,32,36,38,40,62}
total=sum(buckets)
for item in buckets:
    if (total-item)%3==0:
        print('啤酒是',item)
        break

结果:

>>>%Run test8.py
123,124,132,134,142,143,213,214,231,234,241,243,312,314,321,324,341,342,412,413,421,423,431,432,
7+23=30
11+19=30
13+17=30
153
370
371
407
6174
啤酒是 40
>>>

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


本文名称:【python学习】枚举算法案例分析-创新互联
网站网址:http://pwwzsj.com/article/cddisg.html