ooxx7788 发表于 2017-6-7 19:30:25

Python:每日一题 60

本帖最后由 ooxx7788 于 2017-6-8 15:19 编辑

虽然我知道这样算是偷懒,但是我确实就是懒啊!(唉,最近我已经区分不出什么是简单,什么是难了,再发一个吧!)

依然不是不太难的题目,不过这种排序排序不就是最常见的题目嘛!可以自己拓展一下,变成一个长字符串,让你快速解决。看看你行不行呢?或者说,不要用循环,你能解决吗?



**** Hidden Message *****

badaoqingchen 发表于 2017-6-8 14:34:26

from collections import Counter

def findalpha(str1):
    c = Counter(str1)
    print ''.join()

str1 = raw_input('请输入一个只包含字母的字符串:')

findalpha(str1)

jerryxjr1220 发表于 2017-6-8 15:35:27

def reprint(s):
    ss = ''
    for i in range(len(s)):
      if s not in ss:
            ss += s
    return ss
print(reprint('abcqweracb'))

ooxx7788 发表于 2017-6-8 15:52:05

jerryxjr1220 发表于 2017-6-8 15:35


不去弄下61嘛

jerryxjr1220 发表于 2017-6-8 16:00:51

ooxx7788 发表于 2017-6-8 15:52
不去弄下61嘛

化学只停留在初中水平,从高中就没碰过化学,公式啥的基本上都看不懂{:10_277:}

jerryxjr1220 发表于 2017-6-8 16:07:20

ooxx7788 发表于 2017-6-8 15:52
不去弄下61嘛

正好看到一道题目,提供给你作为练习题:
话说有一套砝码,重量w1,w2 ... wn组成的列表w,对应的数量为n1, n2 ... nn组成的列表n
问题1:现在如果告诉你一个总质量weight
你能否用这套砝码称出来?
问题2:如果这套砝码的重量列表仍为w,但是每个砝码对应的数量为无限
现在如果告诉你一个总质量weight,你能否用这套砝码称出来?

ooxx7788 发表于 2017-6-8 16:13:32

jerryxjr1220 发表于 2017-6-8 16:07
正好看到一道题目,提供给你作为练习题:
话说有一套砝码,重量w1,w2 ... wn组成的列表w,对应的数量为 ...

难道没有使用砝码数量最少的这种限制?

jerryxjr1220 发表于 2017-6-8 16:40:27

ooxx7788 发表于 2017-6-8 16:13
难道没有使用砝码数量最少的这种限制?

没有,只要可以称出来,就输出所有可能的组合,如果不能就输出NONE

瓦蓝 发表于 2017-6-8 20:47:46

看看了

SixPy 发表于 2017-6-9 21:43:55

字符串本身就是 序列,这样写更简洁
>>> s='abcqweracb'
>>> foobar = lambda s:''.join(sorted(set(s),key=s.index))
>>> foobar(s)
'abcqwer'

冬雪雪冬 发表于 2017-6-9 23:06:25

据说新版的python的字典是有序的。
>>> string = 'abcqweracb'
>>> d ={}
>>> ''.join(d.fromkeys(string))
'abcqwer'

SixPy 发表于 2017-6-9 23:24:55

冬雪雪冬 发表于 2017-6-9 23:06
据说新版的python的字典是有序的。

''.join(set(s))

直接这样应该也可以

3.6 的哈希方法保持了key插入的顺序

冬雪雪冬 发表于 2017-6-9 23:27:47

SixPy 发表于 2017-6-9 23:24
直接这样应该也可以

3.6 的哈希方法保持了key插入的顺序

我也想用集合的,但好像不行,python3.6.1
>>> string = 'abcqweracb'
>>> ''.join(set(string))
'aebcwqr'

SixPy 发表于 2017-6-9 23:44:46

冬雪雪冬 发表于 2017-6-9 23:27
我也想用集合的,但好像不行,python3.6.1

直接这样就行,不用空字典
''.join(dict.fromkeys(s))

不过,依赖python版本内部特性的方式不够通用。

冬雪雪冬 发表于 2017-6-9 23:46:59

SixPy 发表于 2017-6-9 23:44
直接这样就行,不用空字典




是的,但新版python加入了这个特性,以后有可能成为其通用特性。

chang82651122 发表于 2017-7-9 20:03:33

这个问题我都不知道怎么写。。。。。尴尬额

solomonxian 发表于 2017-7-22 19:10:53

def func(s):
    out = ""
    for i in s:
      if i not in out:
            out += i
    return out
把循环范围缩减一下不知道有没有用
def func2(s):
    out = [""]*len(s)
    for i in set(s):
      out = i
    return "".join(out)

shigure_takimi 发表于 2017-12-6 14:17:30

def func(string):
    s = []
    for index in range(-1, -len(string), -1):
      if string not in string[:len(string)+index]:
            s.append(string)
    s.append(string)
    return ''.join(s[::-1])

print(func('abcqweracb'))

凌九霄 发表于 2018-4-2 17:40:22

import random

string = ''
# 生成随机字符串
for i in range(1, random.randint(10, 101)):
    integer = random.randint(65, 122)
    if not (integer in range(91, 97)):
      string += chr(integer)

print("\n{0:10}生成的字符串:{1}".format(' ', string))
print("上面字符串包含的字符集合:{0}".format(''.join(sorted(set(string),key=string.index))))

咕咕鸡鸽鸽 发表于 2019-1-12 10:28:08

看看
页: [1] 2
查看完整版本: Python:每日一题 60