用于反转句子的Python编码

时间:2014-10-15 08:00:39

标签: python string

这是我目前使用的代码。

translated = []
line = input('Line: ')
while line != '':
  for word in line.split():
    letters = list(word)
    letters.reverse()
    word = ''.join(letters)
    translated.append(word)
  if line == '':
    print(' '.join(translated))
  elif line:
    line = input('Line: ')

假设从用户读取输入行。假设空行表示任何输入的结束。然后程序假定读取所有行,然后按原始顺序重现它们,每个单词都反转到位。

For example if i was to input: Hello how are you
Its output shout be: olleH woh era uoy

目前它要求输入,然后在有空行时停止,但不产生任何东西。没有反转的话没有什么。

任何人都可以告诉我我做错了什么,并帮我解决问题吗?

5 个答案:

答案 0 :(得分:1)

print语句需要在循环之外。您的循环条件可确保循环内line永远不会'',因此永远不会满足if条件。

出于同样的原因,您需要重新考虑elif

答案 1 :(得分:0)

你可能会这样做。

' '.join( [ i[::-1] for i in line.split( ' ' ) ] )
  1. 将该行拆分为单词
  2. 反转每个单词
  3. 将它们放回原处

答案 2 :(得分:0)

问题是当行为空时,你的while循环停止。你应该摆脱这里没用的if / else。

完整脚本:

translated = []
line = input('Line: ')
while line != '':
    for word in line.split():
       letters = list(word)
       letters.reverse()
       word = ''.join(letters)
       translated.append(word)
    #The above for loop could be done in one line with:
    #translated.extend([word[::-1] for word in line.split()])
    line = input('Line: ')

print(' '.join(translated))

答案 3 :(得分:0)

因为@Flav指出在空行之前读取所有行以结束输入。我编写了如下解决方案:

lines = [] # to store all line inputs
while True:
    line = raw_input('Line: ') # input if using python3 or raw_input if python2.6/7
    if line == '':
        break
    lines.append(line)
for line in lines:
    print (' '.join([word[::-1] for word in line.split(' ')]))

答案 4 :(得分:-1)

这很完美

a = "Hello how are you"
" ".join([ "".join(reversed(x)) for x in re.findall('\w+',a) ])