【发布时间】:2021-04-08 06:49:42
【问题描述】:
我想做什么
我正在尝试制作一个反转每个单词的程序,但不反转标签中的单词。
输入输出示例:
输入:
Thank you stack overflow
输出:
knahT uoy kcats wolfrevo
如果单词在标签中,不要颠倒。这样:
输入:
<tag>something
输出:
<tag>gnihtemos
我的代码
我尝试使用堆栈算法解决这个问题。
s = input()
def stackprint(st):
while st != []:
print(st.pop(), end="")
stack = []
tag = False
for ch in s:
if ch == '<':
stackprint(stack)
tag = True
print(ch, end="")
elif ch == '>':
tag = False
print(ch, end="")
elif tag:
print(ch, end="")
else:
if ch == ' ':
stackprint(stack)
print(ch, end="")
else:
stack.append(ch)
print("".join(stack))
问题
但是,如果只有一个单词或没有标签,我的代码将无法正常工作。没有标签时,最后一个字不倒置,只有一个字时,不倒置。
现在的输出:
第一
输入时:
<tag>something
输出:
<tag>something
^ 我需要一些东西来扭转。
第二
输入:
Thank you stack overflow
输出:
knahT uoy kcats overflow
^ 我需要反转溢出。
重要
我需要 里面的任何东西都不应该颠倒。 如果单词在标签中,则不应颠倒 喜欢输入:
<tag>word<tag>
输出:
<tag>drow<tag>
标签和单词之间没有空格。
Thank you <tag>stack overflow
knahT uoy <tag>kcats wolfrevo
【问题讨论】:
-
不是在最后加入堆栈,而是调用
stackprint方法。它将确保在脚本退出之前清空堆栈。 -
现在似乎是学习调试的好时机。在纸上确定您希望代码如何流动以及您希望变量在代码中的哪个位置具有哪些值。这与您实际获得的值相比如何?
-
@NotThatGuy 你什么意思?
-
“
”和下一个单词之间是否有空格?这个“谢谢 堆栈溢出”的输出是什么? -
您是否在编辑后再次测试了您的代码?如果没有,您应该这样做,并且通常不建议对可能解决您遇到的问题并因此使问题无效的问题进行编辑(而是将这些信息留作答案,或者如果您认为它只是删除问题是不太可能对其他人有帮助)。另外,您可能指的是
stackprint(stack),而不是stackprint(st)。