菜鸟教程 Python 练习实例1
本帖最后由 paypojie 于 2022-5-25 20:36 编辑如下
https://www.runoob.com/python/python-exercise-example1.html
我给出的解决方案
def num(s):
a,b,c = str(s),str(s),str(s)
for i in range(123,433):
s = str(i)
if ((s == a) and (s != b) and (s != c))\
and s != '5' and s != '6' and s != '7' and s != '8' and s != '9' and s != '0'\
and s != '5' and s != '6' and s != '7' and s != '8' and s != '9' and s != '0':
if (s == '1' and s != '1') or (s == '2' and s != '2')\
or (s == '3' and s != '3') or (s == '4' and s != '4'):
print(s)
for s in range(1,5):
num(s)
这样写出来 感觉繁琐 写出这段代码的时间都比我不用代码直接心算出来的时间多
写出来自己都看不太懂了
你自己写出来都看不懂,那为啥要这么写呢?为啥不写一个自己看着舒服的解决方案呢?网址上的解决方案不是挺容易理解的吗?为啥不学习网站的写法,非要自己造一个自己都看不懂轮子呢? 看他得源码和你得。。。你得也太复杂了 你这。。是字符串吧。。。而且,这是分割的啥??? 是不是有not in 之类的语法啊??大佬们? 和我最开始一样,都把问题复杂化了。
你的思路还停留在把所有组合都输出,然后排除掉。
网址里那个办法,就是直接过滤掉不合格的,只显示合格的。
你这样理解:
for i in range(1,5):
for j in range(1,5):
for k in range(1,5):
3层循环,最里面的k循环,实际是这样:
1 1 1
1 1 2
1 1 3
1 1 4
--------------下面是j循环
1 2 1
1 2 2
1 2 3
1 2 4
--------
1 3 1
1 3 2
1 3 3
1 3 4
1 3 1
1 4 2
1 4 3
1 4 4
---------------------->
print(i,j,k)
不是打印的三位数,而是三个独立的数,里面用","号隔开了。共就是4*4*4,不是5*5*5.
你别想成这是 个十百,这就是3个独立数字。
------------
你不要把条件写的那么清楚,你要利用计算机的特点,就是傻算。
## 答案:20只鸡,30只猫。
##鸡和猫 一共50只,一共160条腿。鸡几只,猫几只?
for x in range(1, 51):
if x * 2 + (50 - x) * 4 == 160:
print("鸡有:", x)
print("猫有:", 50 - x)
----------鸡猫同笼,我都怕你处理这个问题,要猫是M,鸡是J.... 看不懂, from itertools import permutations
for i in permutations(, 3):
print(i) 我成功的被你绕晕了 本帖最后由 a147888123 于 2022-5-11 21:09 编辑
# -*- coding: UTF-8 -*-
import copy
lista =
#先取四个数,当百位取一位后,十位从剩下得三个数取,个位从剩下得两个数取
listb = []
listc = []
for i in range(0, len(lista)):
listb = copy.deepcopy(lista)
#十位数组只能包含三位,必须删除百位取得数
a = lista
del listb
for j in range(0, len(listb)):
b = listb
listc = copy.deepcopy(listb)
#个位数组只能包含两位,他从十位得数组而来,必须删除十位取得数
del listc
for k in range(0, len(listc)):
c = listc
print(a*100 + b*10+c)import copy
正常情况下,都是按例子写,但是想换个思路,结果坑爹了就是想换个思路搞搞