刚自学python,程序无法运行,求大神带飞。。。。。。

#!/uer/bin/python
# -*- coding: utf-8 -*-
#有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
a=[1,2,3,4]
i=0
g=a[i],s=a[i],b=a[i]
while g<5 and s<5 and b<5:
while (g==s):
g=g+1
if (s==b):
b+1
if (b==g):
b+1
print g+10*s+100*b

#!/uer/bin/python
# -*- coding: utf-8 -*-
#有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

a = [1,2,3,4]
s = []

for x1 in a:
for x2 in a:
for x3 in a:
if x1!=x2 and x1!=x3 and x2!=x3 and x1*100+x2*10+x3 not in s:
s.append(x1*100+x2*10+x3)

print s

运行结果:

你的程序明显不对的,g=a[i],s=a[i],b=a[i]这里,python不能用逗号直接写一堆赋值的,请换行,while里跟你的list一点关系都没有……为啥不直接g=1 s=1 b=1,再说你后面两个b+1都没有赋给b啊,再说中间应该是s=s+1吧,不过很遗憾简单改下之后是一直打印123的死循环。

看你是要不相同且无重复数字,所以无重复直接三个!=,不相同就把每次生成的都存到list里,新的出来跟list对比一下看有没有出现过就可以了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-08-19

    语法不对,程序第三行,g=a[i], s=a[i],把逗号改为;分号,然后程序可以运行。

    程序逻辑不对。


python如果用itertools库的话,这是一句话就搞定的事情。

import itertools
a=[i[0]*100+i[1]*10+i[2] for i in itertools.permutations([1,2,3,4], 3)]


感兴趣搜搜我的课程,用Python做些事,跟大家一起学吧。

相似回答