2015-04-05 69 views
0

我试图熟悉python,我一直在将一些C#代码转换为python,并且我遇到了一个错误,我找不到,我得到“索引超出范围”的错误,这是我的Python代码:列表 - 索引超出范围

import random 

myString = raw_input("Input: ") 

words = myString.split(" ") 
wordList = list() 

for word in words: 
    wordList.append(word) 

wordChoice = 0; 
myStringRandomized = ""; 

while len(wordList) != 0: 
    wordChoice = random.randint(0, len(wordList)) 
    myStringRandomized += wordList[wordChoice] + " " 
    del wordList[wordChoice] 

print("Characters: " + str(len(myString))) 
print("Words: " + str(len(myString.split(" ")))) 
print("Uppercase: " + myString.upper()) 
print("Lowercase: " + myString.lower()) 
print("Randomized: " + myStringRandomized) 

而且工作相当于在C#:

static void Main(string[] args) 
{ 
    Console.Write("Input: "); 
    string myString = Console.ReadLine(); 

    string[] words = myString.Split(' '); 
    List<string> wordList = new List<string>(); 

    foreach (string word in words) 
     wordList.Add(word); 

    Random random = new Random(); 

    int wordChoice = 0; 
    string myStringRandomized = ""; 

    while (wordList.Count != 0) 
    { 
     wordChoice = random.Next(0, wordList.Count); 
     myStringRandomized += wordList[wordChoice] + " "; 
     wordList.Remove(wordList[wordChoice]); 
    } 

    Console.WriteLine("Characters: " + myString.Length); 
    Console.WriteLine("Words: " + myString.Split(' ').Length); 
    Console.WriteLine("Uppercase: " + myString.ToUpper()); 
    Console.WriteLine("Lowercase: " + myString.ToLower()); 
    Console.WriteLine("Randomized: " + myStringRandomized); 
    Console.ReadKey(); 
} 

这将是巨大的,如果在那里我已经出了问题有人能指出, 非常感谢你!

+0

@jonrsharpe这是一个答案,而不是评论。为什么错过甜美甜美的声望点? ;-) – delnan 2015-04-05 13:35:15

回答

4

the documentationrandom.randint可以包括b的值(在这种情况下,len(wordList))。相反,你应该使用random.randrange,这是半开放的(如range)和不会包括stop值(并且,因为0是默认的start,您可以省略它)。

+0

这样做了,非常感谢您的快速回答!欣赏它:) – JustBenji 2015-04-05 13:42:23