私が持っている一連の機能の結果を出力する際に問題があります。私が何時間も立ち往生していたので、どんな情報でも大歓迎です。リストを出力する際にエラーが発生する
エラー:
minNum = theArray[0]
IndexError: list index out of range
所望の出力:
The original array was:
[22, 49, 80, 4, 53, 31, 6, 30, 61, 87]
The maximum value is: 87
The minimum value is: 4
The total value is: 423
The average value is: 42.3
The sorted array is:
[4, 6, 22, 30, 31, 49, 53, 61, 80, 87]
機能: randIntArray - (でテストするために)ランダムな整数の配列を移入。 getInt(プロンプト) - ユーザー10xから整数を取得しようとします。 getData() - 整数を配列(userIntList)に格納するためにgetIntを使用してループ10xを実行します。 swap - リストのスワップルーチン。 sortArray - スワップルーチンを使用して並べ替えます。 displayArray - 配列を出力します。 maxValue - リスト内の最大値を探します(python組み込み関数を使用しません)。 minValue - リスト内のminを探します(python組み込み関数を使用しません)。 aveValue - リスト内のave#を探します(python組み込み関数を使用しません)。 totalValue - リスト内の整数の合計数を見つけます(組み込み関数pythonを使用していません)。 dataOut(theArray) - 上記の値を出力します。 processInput(theArray) - dataOut、sortを使用し、リストをソートされていないソート形式でプロンプトします。 unitTest - ランダム整数関数を使用して結果をテストし、出力します。
import random
def randIntArray():
randomList = []
randomList = random.sample(range(1, 101), 10)
return randomList
def getInt(prompt):
# Function to call when asking for the A and B values later.
try:
x = input(prompt)
y = int(x)
return y
except:
print("That was not an integer. Please enter an integer. ")
def getData():
userIntList = []
for i in range(10):
userNum = getInt("Please enter value number : ")
userIntList.append(userNum)
return userIntList
def swap(a, j, k):
temp1 = a[j]
a[j] = a[k]
a[k] = temp1
def sortArray(a):
for i in range(len(a)):
for k in range(len(a) - 1):
first = k
second = k + 1
if (a[first] > a[second]):
# Uses Swap function
swap(a, first, second)
def displayArray(theArray):
outList = theArray
return outList
def maxValue(theArray):
maxNum = 0
for i in theArray:
if i > maxNum:
maxNum = i
return maxNum
def minValue(theArray):
minNum = theArray[0]
for i in theArray:
if i < minNum:
minNum = i
return minNum
def totalValue(theArray):
aTotal = 0
for s in theArray:
aTotal += s
return aTotal
def aveValue(theArray):
aTotal = totalValue(theArray)
aAverage = aTotal/len(theArray)
return aAverage
def dataOut(theArray):
print("The maximum value is: " + str(maxValue(theArray)))
print("The minimum value is: " + str(minValue(theArray)))
print("The total value is: " + str(totalValue(theArray)))
print("The average value is: " + str(aveValue(theArray)) + "\n")
def processInput(theArray):
print("The original array was:\n " + str(displayArray(theArray)) + "\n")
dataOut(theArray)
sortArray(theArray)
print("The sorted array is:\n " + str(displayArray(theArray)))
def unitTest():
print("Running test . . .")
randIntArray()
theArray = randIntArray()
processInput(theArray)
print("\n Finished test . . .")
def main():
unitTest()
theArray = []
done = False
while not done:
proceedQ = input("Would you like to enter 10 numbers <y/n>? ")
if proceedQ == "y":
getData()
processInput(theArray)
if proceedQ != "y":
done = True
main()
皆さんに参加していただきありがとうございます。天使です。
- バー
は、あなたが() '' varibale theArray'へのgetData 'によって返された値を格納するためのものかもしれませ同一のリストの最大値と最小値を見つけるために行くのpython提供されるツールや機能
を使用してみてください。したがって、 'theArray'は空白ですが、最初の要素にアクセスしようとしている関数' minValue() 'にあります。そのため、エラーがスローされます – kuro
あなたのコードはPythonの慣用句ではありません。 PythonではCamelCaseよりもアンダースコアが優先されます。 'randIntArray'関数(' generate_random_array'という名前のほうが良い)に 'randomList = []'という文を書く必要はなく、 'random.sample(range(1,101)、 –
'displayList'関数は効果的に何もしません。pythonには' min'と 'max'関数が組み込まれています。' ' aTotal'、 'theName'は奇妙に見えて入力が難しいので、実際のプロダクションのPythonコードではこれらの接頭辞を見つけることはできません。まず、Python Tutorialを読んで基礎を理解し、PEP-8で標準Pythonコーディングスタイル。 –