Python:每日一题 60
本帖最后由 ooxx7788 于 2017-6-8 15:19 编辑虽然我知道这样算是偷懒,但是我确实就是懒啊!(唉,最近我已经区分不出什么是简单,什么是难了,再发一个吧!)
依然不是不太难的题目,不过这种排序排序不就是最常见的题目嘛!可以自己拓展一下,变成一个长字符串,让你快速解决。看看你行不行呢?或者说,不要用循环,你能解决吗?
**** Hidden Message ***** from collections import Counter
def findalpha(str1):
c = Counter(str1)
print ''.join()
str1 = raw_input('请输入一个只包含字母的字符串:')
findalpha(str1) def reprint(s):
ss = ''
for i in range(len(s)):
if s not in ss:
ss += s
return ss
print(reprint('abcqweracb')) jerryxjr1220 发表于 2017-6-8 15:35
不去弄下61嘛 ooxx7788 发表于 2017-6-8 15:52
不去弄下61嘛
化学只停留在初中水平,从高中就没碰过化学,公式啥的基本上都看不懂{:10_277:} ooxx7788 发表于 2017-6-8 15:52
不去弄下61嘛
正好看到一道题目,提供给你作为练习题:
话说有一套砝码,重量w1,w2 ... wn组成的列表w,对应的数量为n1, n2 ... nn组成的列表n
问题1:现在如果告诉你一个总质量weight
你能否用这套砝码称出来?
问题2:如果这套砝码的重量列表仍为w,但是每个砝码对应的数量为无限
现在如果告诉你一个总质量weight,你能否用这套砝码称出来?
jerryxjr1220 发表于 2017-6-8 16:07
正好看到一道题目,提供给你作为练习题:
话说有一套砝码,重量w1,w2 ... wn组成的列表w,对应的数量为 ...
难道没有使用砝码数量最少的这种限制? ooxx7788 发表于 2017-6-8 16:13
难道没有使用砝码数量最少的这种限制?
没有,只要可以称出来,就输出所有可能的组合,如果不能就输出NONE 看看了 字符串本身就是 序列,这样写更简洁
>>> s='abcqweracb'
>>> foobar = lambda s:''.join(sorted(set(s),key=s.index))
>>> foobar(s)
'abcqwer'
据说新版的python的字典是有序的。
>>> string = 'abcqweracb'
>>> d ={}
>>> ''.join(d.fromkeys(string))
'abcqwer' 冬雪雪冬 发表于 2017-6-9 23:06
据说新版的python的字典是有序的。
''.join(set(s))
直接这样应该也可以
3.6 的哈希方法保持了key插入的顺序 SixPy 发表于 2017-6-9 23:24
直接这样应该也可以
3.6 的哈希方法保持了key插入的顺序
我也想用集合的,但好像不行,python3.6.1
>>> string = 'abcqweracb'
>>> ''.join(set(string))
'aebcwqr' 冬雪雪冬 发表于 2017-6-9 23:27
我也想用集合的,但好像不行,python3.6.1
直接这样就行,不用空字典
''.join(dict.fromkeys(s))
不过,依赖python版本内部特性的方式不够通用。 SixPy 发表于 2017-6-9 23:44
直接这样就行,不用空字典
是的,但新版python加入了这个特性,以后有可能成为其通用特性。 这个问题我都不知道怎么写。。。。。尴尬额 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) 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')) 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))))
看看
页:
[1]
2