我正在尝试解决一个问题,但是正在努力解决该问题的逻辑方法。问题如下:
“您的任务是对给定的字符串进行排序。字符串中的每个单词将包含一个数字。此数字是单词在结果中应具有的位置。
注意:数字可以是1到9。因此1是第一个单词(不是0)。
如果输入字符串为空,则返回一个空字符串。输入字符串中的单词将仅包含有效的连续数字。“
例如"is2 Thi1s T4est 3a" --> "Thi1s is2 3a T4est"
到目前为止,我已经尝试了以下方法:
def order(sentence):
my_string = "is2 Thi1s T4est 3a"
new_string = " "
for i in my_string:
if i in my_string == none
return new_string = " "
else:
if i in my_string
return new_string
但是坚持继续下一个步骤。如何将“从1开始按顺序排列的单词”放入python代码的for循环中?
我是python和程序设计的初学者,所以我不确定通过创建空字符串new_string
然后排序{{1 }}。这是解决这个问题的好方法吗?我被困在哪个方向上。
答案 0 :(得分:0)
您可以做到:
r = "is2 Thi1s T4est 3a"
def get_number(w) :
for x in w :
try :
i = int(x)
return i
except :
pass
return None
ordered_list = " ".join((sorted( s.split(' ') , key = get_number)))
函数get_number
允许获取单词中出现的第一个数字,因此我们对句子进行拆分以获取其组成的单词,r.split(' ')
给出['is2', 'Thi1s', 'T4est', '3a']
,然后对单词进行排序使用ordered
内置函数创建list,它需要一个列表和一个函数,该函数产生要在其上排序列表的键,并输出排序后的列表,然后我们使用内置函数join
来加入列表使用空格分隔符列出。
输出:
Out[425]: 'Thi1s is2 3a T4est'