gpt4 book ai didi

python - 为什么我的每字反码代码没有反码一些字?

转载 作者:行者123 更新时间:2023-12-04 15:09:06 24 4
gpt4 key购买 nike

我想做什么

我正在尝试制作一个程序来反转每个单词,但不反转标签中的单词。
输入和输出示例:

输入:

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 方法以确保清空堆栈,而不是使用 join 方法打印堆栈,这将为您提供所需的结果。

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)
stackprint(stack)

关于python - 为什么我的每字反码代码没有反码一些字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65529446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com