菜鸟教程例题---第⼀题:【1,2,3,4】组成⽆重复的3位数第⼀题:题⽬:有四个数字:1、2、3、4,能组成多少个互不相同且⽆重复数字的三位数?各是多少?
分析:1.循环:由三位数推出:要做3层循环(定义3个变量,取值范围【1,2,3,4】)
2.判断:由⽆重复推出:这3个变量要互不相同(i!=j,i!=k,k!=j)
⽅法⼀:简单的循环加判断(但是⼀定要注意格式:for之后的冒号)(因为Python中的冒号来代替⼤括号,所以错位尤为重要,错⼀个空格,输出就是有问题的)
for i in [1,2,3,4]:
for j in [1,2,3,4]:
for k in [1,2,3,4]:
if i!=j and i!=k and j!=k:
python菜鸟教程文档print i,j,k
n+=1
print "总数为:",n#因为是输出所有符合要求的3位数之后,最后输出总个数,所有这⼀句在最后,⽽且是顶头写,不包括在任何语句中
⽅法⼆:⽤append()函数将三位数插⼊到空列表中
d=[]
for a in range(1,5):
for b in range(1,5):
for c in range(1,5):
if (a!=b) and (a!=c) and (c!=b):
d.append([a,b,c])
print "总数量:", len(d)#列表的长度就是总个数
print d
⽅法三:从最⼩值遍历到最⼤值,从⽽出"个⼗百"位来,把符合“个⼗百”位各不相同要求的留下
line=[]
for i in range(123,433):#从123开始,到432结束,但是range中要432+1作为临界值
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))
⽅法四:⽤set函数来去除重复的元素,len=3的符合条件
a=0
list_num=['1','2','3','4']#此处把1,2,3,4定义成字符类型,即不能进⾏数字间的运算
for i in list_num:
for j in list_num:
for k in list_num:
if len(set(i+j+k))==3:#set(i+j+k)就是把(i,j,k)中重复的情况(如:232)去除掉了,所以set()函数就是这个作⽤,我也还没有深⼊了解                print(int(i+j+k))#上⾯定义成了字符型,所以(i+j+k)不会进⾏加法运算
a+=1
print("total is:% d"%a)#输出时有%d时:后⾯还要有%d
⽅法五:把for循环和if语句合成⼀句,(知道有这种表⽰形式就可以了,不必记住或者⽤到⾃⼰程序中)
listnum=[1,2,3,4]
list=[i*100+j*10+k for i in listnum for j in listnum for k in listnum if(j!=i and k!=j and k!=i)]
print(list)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。