liuzhengyuan 发表于 2020-4-28 08:53:35

小白Python练习册(8)【鱼币福利】

本帖最后由 liuzhengyuan 于 2020-4-28 18:20 编辑

给定一个字符串 s,输出它的所有连续子串
输入:s = 'abcd'
输出:
a
b
c
d
ab
bc
cd
abc
bcd
abcd
https://xxx.ilovefishc.com/album/202004/16/091918caswgdtsemdtz82t.gif
有人说这已经不是小白级别的了{:10_266:}
但是我的答案是使用小白办法来写的{:10_257:}
答案(有注释):
**** Hidden Message *****



如果觉得有挑战性,别忘了评分{:10_281:} :

https://xxx.ilovefishc.com/album/202003/26/115014z7o47g8gxmd4lzjt.gif

wuqramy 发表于 2020-4-28 08:53:36

def substring(strs):
    sarr = []
    for i in range(0,len(strs)):
      for j in range(i+1,len(strs)+1):
            sarr.append(strs)
    return sarr
strs = substring(input('Input a string:'))
for i in strs:
    print(i)

zltzlt 发表于 2020-4-28 13:17:08

这已经不算小白级别了

永恒的蓝色梦想 发表于 2020-4-28 14:10:08

def func(string):
    l=string.__len__()
    for i in range(l):
      for j in range(i+1,l+1):
            yield string

def main(s):
    print(*func(s),sep='\n')

main('abcd')

BlackPhosph 发表于 2020-4-28 14:43:16

....

WangJS 发表于 2020-4-28 15:01:46

本帖最后由 WangJS 于 2020-4-28 18:54 编辑

先用一个最简单的方法:

应该都能理解

s = 'abcd'
for i in range(len(s)):
    print(s)
for i in range(len(s)-1):
    print(s)
for i in range(len(s)-2):
    print(s)
for i in range(len(s)-3):
    print(s)

再试着用一个for循环:

s = 'abcd'
for i in range(1,5):
    for f in range(len(s)-i+1):
      print(s)

最后在按照题目要求变成函数

def zichuan(s):
    for i in range(1,len(s)+1):
      for f in range(len(s)-i+1):
            print(s)
f = input('输入内容:')
zichuan(f)

冰河星云 发表于 2020-4-28 15:04:32

。。。
def e8(s):
      for wlen in range(1, len(s) + 1):
                for pos in range(len(s) - wlen + 1):
                        print(s)
这好像不是小白级别了吧……

liuzhengyuan 发表于 2020-4-28 15:06:11

冰河星云 发表于 2020-4-28 15:04
。。。

这好像不是小白级别了吧……

别看这么难,其实只要把握住方法就很容易了我把代码加了注释

冰河星云 发表于 2020-4-28 15:09:41

liuzhengyuan 发表于 2020-4-28 15:06
别看这么难,其实只要把握住方法就很容易了我把代码加了注释

这样不是更简单
print("""a
b
c
d
ab
bc
cd
abc
bcd
abcd
""")
(滑稽{:10_256:})

weiter 发表于 2020-4-28 15:10:15

我……不会

liuzhengyuan 发表于 2020-4-28 15:11:03

weiter 发表于 2020-4-28 15:10
我……不会

其实很简单的,就像做数学题一样,只要找到方法{:10_257:}(你可以看看答案{:10_256:})

qiuyouzhi 发表于 2020-4-28 15:11:23

本帖最后由 qiuyouzhi 于 2020-4-28 15:16 编辑

liuzhengyuan 发表于 2020-4-28 15:06
别看这么难,其实只要把握住方法就很容易了我把代码加了注释

最重要的是,我感觉小白把握不住方法。。。
def func(s):
    for i in range(len(s)+1):
      for j in range(i):
            yield s
由于代码写的太淦,这里附上测试
def main():
    a = tuple(func('abcd'))
    b = tuple(e8('abcd'))
    for each in a:
      if each not in b:
            print("FALSE!")
            break
    else:
      print("TRUE!")

P.S: 你把yield改成print,然后输入一个特别长的字符串试试?

weiter 发表于 2020-4-28 15:11:58

liuzhengyuan 发表于 2020-4-28 15:11
其实很简单的,就像做数学题一样,只要找到方法(你可以看看答案)

也是,但我直接跳过基础去学界面
需要的时候才会返回去

liuzhengyuan 发表于 2020-4-28 15:14:52

zltzlt 发表于 2020-4-28 13:17
这已经不算小白级别了

拓展题{:10_245:}

wuqramy 发表于 2020-4-28 15:17:08

冰河星云 发表于 2020-4-28 15:09
这样不是更简单

(滑稽)

你要通用啊

qiuyouzhi 发表于 2020-4-28 15:20:18

liuzhengyuan 发表于 2020-4-28 15:14
拓展题

我觉得还是得老王出题

liuzhengyuan 发表于 2020-4-28 15:21:57

qiuyouzhi 发表于 2020-4-28 15:20
我觉得还是得老王出题

{:10_260:}

老八秘制 发表于 2020-4-28 15:30:19

隐隐约约感觉zltzlt的每日一题有这个{:10_245:}

永恒的蓝色梦想 发表于 2020-4-28 15:33:26

zltzlt 发表于 2020-4-28 13:17
这已经不算小白级别了

这个不是很简单吗{:10_260:}

_2_ 发表于 2020-4-28 15:34:10

投机取巧:

>>> from itertools import combinations as c
>>> result = []
>>> target = "abcd"
>>> result.append((target,))
>>> result.extend(list(c(target, 3)))
>>> result.extend(list(c(target, 2)))
>>> result.extend(list(c(target, 1)))
>>> result
[('abcd',), ('a', 'b', 'c'), ('a', 'b', 'd'), ('a', 'c', 'd'), ('b', 'c', 'd'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd'), ('a',), ('b',), ('c',), ('d',)]
>>>
页: [1] 2 3 4
查看完整版本: 小白Python练习册(8)【鱼币福利】