好友
阅读权限10
听众
最后登录1970-1-1
|
本帖最后由 世界上只有dog雄 于 2019-12-13 13:02 编辑
先上代码:#这个代码目的是随机生成1-4之间的三位数,好像暴力破解能用上!
[Python] 纯文本查看 复制代码 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
先看前三句(都类似):
[Python] 纯文本查看 复制代码 for i in range(1,5)
意思是:利用range关键字生成了(1-4)不包含的5的三位数字。然后通过for循环传递给(迭代)i #这样解释不知道准不准确
第四句主要是if和and的使用:
[Python] 纯文本查看 复制代码 if( i != k ) and (i != j) and (j != k):
让if来判断,i,k,j之间互相都不相等。以and的“且”也就是(i !=k )并且( i !=j )并且( j != k) 需要这三个条件都要成立才为真。
我感觉作为小白,这里的and的使用才是难点!
我们回顾and的知识点:
1、两边的表达式都为True的时候结果才为True。
2、任意一边为False的时候结果都为False
3、两边的表达式都为False,那肯定结果也是False
@bester 谢谢补充!
把and 翻译成中文的 “并且”
把or 翻译成中文的“或者”
"并且"理解成 所有的条件都要成立
"或者"理解成,只要其中一个条件成立
@wsleocn 谢谢补充高级写法,不过看不懂
[Python] 纯文本查看 复制代码 import itertools
mylist = itertools.permutations('1234',3)
for i in mylist:
print(i)
以下是知识点:
so我们得出结论:
得出的结果就是这三个表达式之间都不想等的时候条件才为True,也就是为真的时候if下print(i,j,k)才会执行,为假的时候就不执行。
然后执行结果为:
[Python] 纯文本查看 复制代码 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
借着这样分析理顺思路自己也明白了。不知道能不能也帮助和我一起初学的朋友。如果有错误的地方也请进阶者指出或者帮助,谢谢! |
-
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|