我正在尝试熟悉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();
}
如果有人能指出我出了问题的地方,那就太好了,非常感谢!
每文档,random.randint
可以包括的值b
(在这种情况下,len(wordList)
)。相反,您应该使用random.randrange
,它是半开的(如range
),并且不会包含该stop
值(并且作为0
默认值start
,您可以将其忽略)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句