甜萝 发表于 2022-5-11 19:08

菜鸟教程 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)

这样写出来 感觉繁琐 写出这段代码的时间都比我不用代码直接心算出来的时间多
写出来自己都看不太懂了

unmask 发表于 2022-5-11 19:40

你自己写出来都看不懂,那为啥要这么写呢?为啥不写一个自己看着舒服的解决方案呢?网址上的解决方案不是挺容易理解的吗?为啥不学习网站的写法,非要自己造一个自己都看不懂轮子呢?

a147888123 发表于 2022-5-11 19:44

看他得源码和你得。。。你得也太复杂了

我下了 发表于 2022-5-11 19:56

你这。。是字符串吧。。。而且,这是分割的啥???

ee789852 发表于 2022-5-11 20:03

是不是有not in 之类的语法啊??大佬们?

user999 发表于 2022-5-11 20:19

和我最开始一样,都把问题复杂化了。
你的思路还停留在把所有组合都输出,然后排除掉。
网址里那个办法,就是直接过滤掉不合格的,只显示合格的。
你这样理解:
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....

9992979 发表于 2022-5-11 20:19

看不懂,

平淡最真 发表于 2022-5-11 20:27

from itertools import permutations
for i in permutations(, 3):
    print(i)

king100 发表于 2022-5-11 20:31

我成功的被你绕晕了

a147888123 发表于 2022-5-11 21:06

本帖最后由 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
正常情况下,都是按例子写,但是想换个思路,结果坑爹了就是想换个思路搞搞



页: [1] 2 3
查看完整版本: 菜鸟教程 Python 练习实例1