2

ユーザー入力に基づいて(一意の変数を使用して)多くの raw_inputs を生成する方法はありますか? だから、私がこれを持っていたとしましょう:

if choice == 1:
    noelemen = int(raw_input("Enter total amount of elements: "))

そのraw_inputフィールドに入力された整数が必要な量のraw_inputを「生成」するようにする方法はありますか? 可能であれば、関数などを使用すると思いますが、それを行うにはどうすればよいか少し混乱しています。

私が現在持っているのはこれです:

if noelemen == 1:
        first = raw_input("Enter element: ")

        #Look for the weight of the entered element
        weight1 = float(elemen_data.get(first.lower()))

        if weight1 is not None:
            total_weight = weight1
        print "Total mass =", total_weight

if  noelemen == 2:
        first = raw_input("Enter first element: ")
        second = raw_input("Enter second element: ")

        #Look for the weight of the entered element
        weight1 = float(elemen_data.get(first.lower()))
        weight2 = float(elemen_data.get(second.lower()))

        if weight1 is not None:
            total_weight = weight1 + weight2
        print "Total mass =", total_weight

これはおそらくかなり厄介な方法です。特に、10 要素程度、またはそれ以上の要素まで上げる必要があるためです。

繰り返しますが、ユーザー入力に基づいて一意の変数で raw_inputs を生成する方法はありますか?

4

2 に答える 2

4

このようなものはどうですか?

elements = []
numberOfPrompts = raw_input("Enter total amount of elements: ")
for i in range(numberOfPrompts):
   # will prompt "Enter Element 1: " on the first iteration
   userInput = raw_input("Enter Element %s" % (i+1, )) 
   elements.append(userInput)

例:

>>> Enter total amount of elements: 2 # now hit enter

この時点で、変数の値はにnumberOfPromptsなります2。変数の値は次のelementsようになります[]。つまり、空のリストです。

>>> Enter Element 1: 3.1415 # hit enter

numberOfPrompts滞在2elementsます['3.1415']

>>> Enter Element 2: 2.7182

elementsになります['3.1415', '2.7182']

これでforループが完了し、タプル(配列elementsのようにアクセスできる0インデックスリストにユーザー入力が便利に表示されます。

>>> elements[1]
2.7182

編集:

あなたのコメントを読んだ後、私はあなたが何をしようとしているのかに気づきました、そして他の答えが述べたように、これには辞書を使うのが最善でしょう。これは機能するはずです:

elements = {}
numberOfPrompts = raw_input("Enter total amount of elements: ")
for i in range(numberOfPrompts):
   # will prompt "Enter Element 1: " on the first iteration
   userInput = raw_input("Enter Element %s" % (i+1, )) 
   userInput = userInput.lower()
   elements[userInput] = float(elem_data.get(userInput))

これelementsで、次のようになります。

{'oxygen':15.9994, 'hydrogen':1.0079}

このようにすべてのキーを繰り返すことができます(どの要素が入力されているかを確認するため)。

for element in elements.keys():
    print element
# output:
oxygen
hydrogen

すべての値を取得するには(たとえば、それらを合計するには)、次のようにします。

weightSum = 0
for weight in elements.values():
    weightSum += weight
print weightSum
# output:
17,0073

この例はPython2.x用であることに注意してください。Python 3.xの場合、いくつかの調整が必要になります。

于 2012-08-15T12:11:06.290 に答える
1

これには辞書を使用します。

noelemen = int(raw_input("Enter total amount of elements: "))
elem={}
for x in xrange(1,noelemen+1):
    elem[x]=raw_input("Enter element: ")
于 2012-08-15T12:09:51.453 に答える