Python 练习实例1
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
程序源代码:
实例
#!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i != k ) and (i != j) and (j != k): print (i,j,k)
以上实例输出结果为:
1 2 3 1 2 4 1 3 2 1 3 4 1 4 2 1 4 3 2 1 3 2 1 4 2 3 1 2 3 4 2 4 1 2 4 3 3 1 2 3 1 4 3 2 1 3 2 4 3 4 1 3 4 2 4 1 2 4 1 3 4 2 1 4 2 3 4 3 1 4 3 2
Python 100例
zavier
126***0796@qq.com
使用列表形式,并计算总结:
zavier
126***0796@qq.com
盼盼
946***399@qq.com
将for循环和if语句综合成一句,直接打印出结果
盼盼
946***399@qq.com
习惯乌龙茶
rea***ngtao@163.com
参考方法(设置最大,最小值):
#!/usr/bin/python # -*- coding: UTF-8 -*- line=[] for i in range(123,433): a=i%10 b=(i%100)//10 c=(i%1000)//100 if a!=b and b!=c and a!=c and 0<a<5 and 0<b<5 and 0<c<5 : print (i) line.append(i) print('the total is :',len(line))习惯乌龙茶
rea***ngtao@163.com
成科
121***125@qq.com
参考地址
python3 下参考方案:
#!/usr/bin/env python3 #coding:utf-8 num=[1,2,3,4] i=0 for a in num: for b in num: for c in num: if (a!=b) and (b!=c) and (c!=a): i+=1 print(a,b,c) print('总数是:',i)成科
121***125@qq.com
参考地址
白色帽子
liu***7@163.com
参考方法:
#!/usr/bin/env python #-*- coding:utf-8 -*- #用集合去除重复元素 import pprint list_num=['1','2','3','4'] list_result=[] for i in list_num: for j in list_num: for k in list_num: if len(set(i+j+k))==3: list_result+=[int(i+j+k)] print("能组成%d个互不相同且无重复数字的三位数: "%len(list_result)) pprint.pprint(list_result)白色帽子
liu***7@163.com
Chyroc
che***unpeng@foxmail.com
python自带这个函数的
Chyroc
che***unpeng@foxmail.com
weapon
965***124@qq.com
补充一下:
weapon
965***124@qq.com
逸章
me@***gdewen.com
没事找事之位运算
逸章
me@***gdewen.com
DCGDDD
805***426@qq.com
考虑减少冗余判断和循环,做如下优化;
DCGDDD
805***426@qq.com
嘿嘿
123***.com
Python3 测试实例:
嘿嘿
123***.com
Krystal
104***7454@qq.com
加入了format函数
#!/usr/bin/python #-*- coding: UTF-8 -*- list_num = [1,2,3,4] list = [i*100 + j*10 + k for i in list_num for j in list_num for k in list_num if ( i != j and i != k and j != k)] d = len(list) print('1,2,3,4能组成 %d 个互不相同且无重复数字的三位数。' % d) print('他们各是:%s' % list)Krystal
104***7454@qq.com
红烧土豆块
545***924@qq.com
数量统计用个做自加就够了
#!/usr/bin/env python3 #coding=utf-8 from itertools import permutations t = 0 for i in permutations('1234',3): print(''.join(i)) t += 1 print("不重复的数量有:%s"%t)红烧土豆块
545***924@qq.com
这个好好玩
303***045@qq.com
参考:
这个好好玩
303***045@qq.com
XMDERO
124***5621@qq.com
XMDERO
124***5621@qq.com
阳光不锈
173***979@qq.com
参考方法:
#coding=utf-8 print("----------递归法 -------------") #递归法 def f01(i): if i==123: print(i) return else: if (set('567890') & set(str(i))==set()) and (len(set(str(i)))==3): print(i) f01(i-1) f01(432) print("----------生成器法-------------") #生成器法 def f02(): for i in range(123,433): if (set('567890') & set(str(i))==set()) and (len(set(str(i)))==3): yield i for i in f02(): print(i)阳光不锈
173***979@qq.com
whitestonex
851***07@qq.com
参考方法:
import itertools DataIn = list('1234') TmpList = [] for x in list(itertools.combinations(DataIn,3)): TmpList = TmpList + list(itertools.permutations(x,3)) for i in TmpList: print(''.join(i))whitestonex
851***07@qq.com