1

私はPythonが初めてで、数字のリストを配列に入力することを理解しようとしています。これは私がやったことです:ユーザーに番号を尋ねます

iNum = int(input("Please enter your number: "))

長さを見つける

iLen=len(str(iNum))

数字を配列に入力します

a=[]
for i in range(0,iLen,1):
    a[i].append=iNum%10
    iNum=iNum//10

うまくいかず、その理由がわかりません.. a[i]=iNum%10.

助けていただけますか?

4

5 に答える 5

2

コードにはいくつかの紛らわしい点があります。あなたの最終目標は正確には何ですか?配列内の単一の数値のすべての桁が必要ですか? または、ユーザーに複数の数字を入力してもらいたいですか?

私を混乱させるこれらのことでさえ、私が見ることができるいくつかのことはまだ間違っています:

a[i].append=iNum%10

これは最初から失敗する運命にあります:aは空 ( a = []) と宣言されているため、a[i]要素はありません。IDLE のようなインタラクティブな環境でこのコードを試すことができます。

>>> a = []
>>> a[0] = 'hello'
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    a[0] = 'hello'
IndexError: list assignment index out of range

appendおそらく、リストでメソッドを呼び出すつもりでした。ただし、そのメソッドを呼び出すには、等号を使用せず、括弧を使用します。そのようなもの:

a.append(iNum % 10)

注意すべきもう 1 つの点は、 への呼び出しrangeが少し余計なことです。0 からある数値まで 1 ずつ反復することは非常に一般的であるため、これがデフォルトになっています。

range(iLen)

すべてをまとめると、次のようになります。

a=[]
for i in range(iLen):
    a.append(iNum%10)
    iNum=iNum//10

単一の数値の数字をリストに取得したい場合は、次のlistように文字列に対して関数を使用するだけです。

>>> list('123')
['1', '2', '3']

Python では、ループを使用して文字列の文字をループできforます。したがって、各文字を整数に変換する場合は、次のようにすることもできます。

a = []
for digit in str(iNum):
    a.append(int(digit))
于 2013-02-03T08:54:03.537 に答える
1

各桁が数字に表示されるカウントを出力するよりも、ユーザーから数字を取得する必要があります。

#! /usr/bin/python3.2

n = input ("Please enter your number: ")

for digit in map (str, range (10) ):
    print ('{} appears {} times in your number.'. \
        format (digit, len ( [c for c in n if c == digit] ) ) )
于 2013-02-03T09:20:50.713 に答える
1

.append()リストの最後にアイテムを追加するメソッドです。あなたの書き方は正しくありません:

a.append(iNum % 10)

あなたがやろうとしていることを行うより簡単な方法は、リスト内包表記を使用することです:

number = input("Please enter your number: ")  # You want to keep it as a string
a = [int(digit) for digit in number]

またはさらに短くmap()

a = map(int, number)
于 2013-02-03T08:50:45.487 に答える
0

これa[i].append=iNum%10は、呼び出し可能なメソッドへの参照をオブジェクトにバインドするため、間違っていintます。それとは別にappend、リストに移動すると、リストの最後にオブジェクトが自動的に挿入されます。リスト内の特定の位置に何かを配置したい場合は、insert()メソッドの使用を検討してください。

コードを即座に修正するには、次のように呼び出します。a.append(iNum%10)

于 2013-02-03T08:49:34.193 に答える