这是我目前使用的代码。
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
目前它要求输入,然后在有空行时停止,但不产生任何东西。没有反转的话没有什么。
任何人都可以告诉我我做错了什么,并帮我解决问题吗?
答案 0 :(得分:1)
print
语句需要在循环之外。您的循环条件可确保循环内line
永远不会''
,因此永远不会满足if
条件。
出于同样的原因,您需要重新考虑elif
。
答案 1 :(得分:0)
你可能会这样做。
' '.join( [ i[::-1] for i in line.split( ' ' ) ] )
答案 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) ])