关于#for#的问题,如何解决?

img

关于这个问题以下是我参考网上的代码

a=input()
l=len(a)
for i in range(l,9,-1):
    if "6"*i in a:
        a=a.replace("6"*i,"27")
for i in range(9,3,-1):
    if "6"*i in a:
        a=a.replace("6"*i,"9")
print(a)

如果我将for循环更改为如下代码

a=input()
l=len(a)
for i in range(10,l+1):
    if "6"*i in a:
        a=a.replace("6"*i,"27")
for i in range(4,10):
    if "6"*i in a:
        a=a.replace("6"*i,"9")
print(a)

此时代码则无法通过测试
但是我写出的for循环与网上写出的for循环差别只有一个升序排列一个降序排列
原理应该都一样吧
为什么我写出的升序for循环无法通过全部测试?😕

循环边界不对,第一个for循环的循环次数变少了,只循环了10到字符串长度之间的次数,而原始代码是循环了字符串长度到9之间的次数。
第二个for循环的循环次数也发生了变化,只循环了4到9之间的次数,而原始代码是循环了9到3之间的次数
for i in range(10,l+1):
应该是
for i in range(l, 2, -1):

原因很简单啊

I say 66666666666

这里有116,倒序就会变成127

正序从·10个开始,那就会变成 2716,成为 276

所以。。。。你懂了?
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7672749
  • 除此之外, 这篇博客: 程序的循环结构(for循环)中的 字符串遍历循环: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    for c in s:

    <语句块>

    s是字符串,遍历字符串每个字符,产生循环。

    c代表字符串中的每个字符,它能够从字符串中按顺序取出每一个字符放到c中,而针对每一次取出的字符,执行一次语句块,进而产生循环。

    代码示例如下:

    for c in "Python123":
        print(c,end=",")

    运行界面如下: 


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^