2

我想限制python 2.7中列表的大小我一直在尝试用while循环来做,但它不起作用

l=[]
i=raw_input()//this is the size of the list
count=0
while count<i:
    l.append(raw_input())
    count=count+1

问题是它没有完成循环。我认为这个问题有一个简单的答案,但我找不到。提前致谢

4

3 回答 3

2

我认为问题出在这里:

i=raw_input()//this is the size of the list

raw_input()返回一个字符串,而不是整数,因此 和 之间的比较i没有count意义。[在 Python 3 中,您会收到错误消息TypeError: unorderable types: int() < str(),这会使事情变得清楚。] 如果您转换i为 int,但是:

i = int(raw_input())

它应该做你所期望的。(我们将忽略错误处理等,并可能在需要时转换您添加的内容l。)

请注意,编写类似的东西会更像 Pythonic

for term_i in range(num_terms):
    s = raw_input()
    l.append(s)

大多数情况下,您不需要通过“+1”手动跟踪索引,因此如果您发现自己这样做,可能会有更好的方法。

于 2012-06-23T23:28:20.353 回答
1

那是因为 i 有一个字符串值类型,并且 int < "string" 总是返回 true。

你想要的是:

l=[]
i=raw_input() #this is the size of the list
count=0
while count<int(i): #Cast to int
    l.append(raw_input())
    count=count+1
于 2012-06-23T23:28:35.913 回答
0

您应该尝试将代码更改为:

l = []
i = input() //this is the size of the list
count = 0
while count < i:
    l.append(raw_input())
    count+=1

raw_input() 返回一个字符串,而 input() 返回一个整数。也是count+=1count = count + 1. 祝你好运

于 2012-06-23T23:30:18.137 回答