每当用户输入时,都会出现范围错误


userInput = input();
for x in range(0,len(userInput)):
    if(userInput[x] == " "):
        spaceValue = x;
rawWord = userInput[0:spaceValue];
secWord = userInput[spaceValue+1:];
wordArray = [];
repeats = len(rawWord); #NEW VAR
if (len(rawWord) == len(secWord)):
    for x in range(0,len(rawWord)):
        wordArray.append(secWord[x]);
    for x in range(0,len(rawWord)):
        for z in range(0,len(rawWord)):
            if((rawWord[x] == wordArray[z])): #Line 15 #repeats insted of wordArray[z]
                wordArray.remove(rawWord[x]);
                repeats = repeats - 1;
                break;
    if(len(wordArray) == 0):
        print("YES");
    else:
        print("NO");
else:
    print("NO");

如果两个单词的长度相同并且具有相同的字母,则应该打印的代码应该是是。

错误在第15行: if((rawWord[x] == wordArray[z])):
indexError:列表索引以外

它在

时起作用
  1. 单词是相同的长度相同的字母
  2. 单词是不同的长度
  3. 单词是相同长度所有字母都是不同的

时它不起作用
  1. 单词是相同的长度不同的字母,但至少一个字母是相同的

正如我在评论中指出的那样,您正在通过for z in range(0,len(rawWord)):进行循环,但索引到wordArray,然后将其从循环中删除。

总是担心您是否要删除您要循环的东西。

我可以建议一个更好/更多的Pythonic解决方案吗?

from itertools import permutations
userInput = input()
words = userInput.split(' ')
rawWord = words[0]
otherWords = [''.join(p) for p in permutations(words[1])]
if rawWord in otherWords:
    print("YES")
else:
    print("NO")

我们可以使您的工作 - 当您在第15行上索引wordArray时,不要忘记使用重复计数。或者是第15行。我还删除了一些不需要的标点符号。

userInput = input()
for x in range(0,len(userInput)):
    if userInput[x] == " ":
        spaceValue = x
rawWord = userInput[0:spaceValue]
secWord = userInput[spaceValue+1:]
wordArray = [];
repeats = len(rawWord)
if len(rawWord) == len(secWord):
    for x in range(0,len(rawWord)):
        wordArray.append(secWord[x])
    for x in range(0,len(rawWord)):
        for z in range(0,len(rawWord)):
            if (rawWord[x] == wordArray[z-repeats]): #Line 15
                wordArray.remove(rawWord[x])
                repeats = repeats - 1
                break;
    if(len(wordArray) == 0):
        print("YES")
    else:
        print("NO")
else:
    print("NO")

相关内容

  • 没有找到相关文章

最新更新