如何解决如何在第一次迭代后阻止它退出?
我试图返回一个用新字符替换给定旧字符的语句,但循环在第一次迭代后一直退出。
def test(s,old_ch,new_ch):
"""returns the given input and replaces an old character with a new character"""
newstring = ""
for ch in s:
while (ch == old_ch):
newstring += new_ch
break
while (ch != old_ch):
newstring += ch
break
return newstring
我知道在 python 中已经定义了替换函数,但这是我被告知这样做的方式。 (与 for ch in s
位相同)
解决方法
你需要改变两件事。
-
不要使用 while 循环和中断,只需使用 if 语句。您的代码仍会以相同的方式工作,但会更具可读性。
-
将 return 语句移到 for 循环之外,即取消缩进。这样,在整个 for 循环执行完毕后才会返回
newstring
,这是所需的行为。
完整的更正代码如下:
def test(s,old_ch,new_ch):
"""returns the given input and replaces an old character with a new character"""
newstring = ""
for ch in s:
if (ch == old_ch):
newstring += new_ch
else:
newstring += ch
return newstring
print(test("Megalovania","a","o"))
# Prints Megolovonio
,
for ch in s
语句用于遍历字符串的每个字符。
因此,for 循环内的 while 循环不是必需的。
def test(s,new_ch):
"""returns the given input and replaces an old character with a new character"""
newstring = ""
for ch in s:
if(ch == old_ch):
newstring = newstring+new_ch
if(ch != old_ch):
newstring = newstring + ch
return newstring
此代码执行您想要实现的预期工作。
,试试这个,这样你会更好地理解迭代。
def test(s,new_ch):
newstring = ""
for ch in s:
print(f"ch is {ch}")
if (ch == old_ch):
print(f"if condition is True for ch {ch} and old_ch {old_ch}")
newstring += new_ch
else:
print(f"elif condition is True for ch {ch} and old_ch {old_ch}")
newstring += ch
print(newstring)
return newstring
调用这个函数
test("New to Python","t","y")
输出是
ch is N
elif condition is True for ch N and old_ch t
ch is e
elif condition is True for ch e and old_ch t
ch is w
elif condition is True for ch w and old_ch t
ch is
elif condition is True for ch and old_ch t
ch is t
if condition is True for ch t and old_ch t
ch is o
elif condition is True for ch o and old_ch t
ch is
elif condition is True for ch and old_ch t
ch is P
elif condition is True for ch P and old_ch t
ch is y
elif condition is True for ch y and old_ch t
ch is t
if condition is True for ch t and old_ch t
ch is h
elif condition is True for ch h and old_ch t
ch is o
elif condition is True for ch o and old_ch t
ch is n
elif condition is True for ch n and old_ch t
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。