1

ここでの最初の質問です。もし私が何かを正しく行っていない場合は、教えてください。それを修正したり、次回は正しく行うことができます。

ユーザーが 10 個の数字を入力できるようにしてから、与えられた逆の順序でそれらを吐き出そうとしています。ただし、9 つの数字だけを要求し続けるか、リストの最後の変数に何も割り当てないため、範囲を正しく取得できません。

Python 3.x を使用しています。

これが私のコードです:

#Creating my list
myNumbers=[1,2,3,4,5,6,7,8,9,10,11]

#Creating a for loop for inputs
for A in range (1,10):
    myNumbers[A]=input("Enter a number: ")


#Creating a for loop for outputs
for B in range (10,1,-1):
    print(myNumbers[B])

入力できるのは 9 つの数字だけで、出力は数字の 11、次に逆の入力です。

どんな助けでも大歓迎です。

4

4 に答える 4

3

rangeは常に最後の値を省略し、デフォルトで 0 から開始します (Python ではリストのインデックスは 0 であるため、10 要素のリストには 0 から 9 までのインデックスがあることに注意してください)。

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

また、を使用する代わりに、次を使用range(10,1,-1)することをお勧めしreversedます。

for i in reversed(range(10)): # iterates from 9 down to 0

または、リスト内の項目を印刷しているだけなので、反転したリスト項目を直接反復処理します。

for item in reversed(myNumbers):
    print(item)
于 2013-03-01T01:51:03.277 に答える
1

9 つの数字しか入力できない理由は、リストの最初の要素のインデックスが0であるため、に割り当てる必要があるためです。A[0]...A[9]

空のリストから始めればappend、何回でもリストに入れることができるので、事前にサイズを知る必要はありません。

my_numbers = []

for i in range(10):
    my_numbers.append(input("Enter a number: "))

for item in reversed(my_numbers):
    print(item)

Python のループ変数は数値である必要はありません。オブジェクトのシーケンスを返すものであれば何でも反復処理できます。

リスト内包表記と呼ばれる、このようなリストを簡単に作成する方法があります。その後、プログラムはわずか3行になります

my_numbers = [input("Enter a number: ") for i in range(10)]

for item in reversed(my_numbers):
    print(item)
于 2013-03-01T01:50:56.147 に答える
0
print( '\n'.join(reversed([input("Enter a number: ") for i in range(10)])) )

また

li = []
for i in xrange(4):
    li.insert(0,input("Enter a number: ")
print( '\n'.join(li) )

このソリューションでは、新しい(反転された)リストオブジェクトは作成されません。目的のリストを直接作成します。
に短縮することができます

li = []
any(li.insert(0,input("Enter a number: ")) for i in xrange(4))
print( '\n'.join(li) )
于 2013-03-01T02:35:04.700 に答える
0

範囲 (1,10) の代わりに範囲 (0,10) を使用してみてください

range (1,10) はfor (i=1;i<10;i++)、9 回しか実行されない (i=10 の場合は実行されない) と同様であり、配列インデックスは 1 ではなく 0 から始まります。

于 2013-03-01T01:53:26.270 に答える