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+=1、よりも優れたプログラミング手法ですcount = count + 1。幸運を

于 2012-06-23T23:30:18.137 に答える