0

計算された平均を超える配列内の値の数を表示しようとすると、何らかの理由でコードを実行すると、平均を超える学生の年齢の数をカウントするためのカウンター ループがスキップされます: 配列に 3 つの年齢値を読み込みます35、25、および 50 で、平均を上回っている数を表示したいのですが、これをスキップしますか? また、ループを終了し、if/else の else に何も入れたくない場合、else に空のスペースが必要な場合は何を入れれば何も変わらないのでしょうか? これまでの私のコードは次のとおりです。

st_age = [0] * 3 
for g in range(0,3):
    st_age[g] = int(input("Enter student age "))

g = 0 
sum = 0
count = 1
count2 = 0

while g < len(st_age):
    sum = sum + st_age[g]
    g += 1
average = sum / len(st_age) #the average calc. 
print "the average is:", average 
#starting counter loop here: 
g = 0
while g < len(st_age):
    if st_age[g] > average:
        count = count + 1 
    else: count = count + 1 # I don't know what to put here, it skips the whole thing

print "the number above the average is:", count
4

4 に答える 4

1

あなたが初心者なら、関数名を変数として使用しないように注意する必要があります。

age = [3,14,55]  
sum_age = 0
count = 1
count2 = 0
g = 0  

while g < len(age):
    sum_age += age[g]
    g += 1 
average = sum_age / len(age) #the average calc. 
print "The average is:", average  

g = 0
while g < len(age):
    if age[g] > average:
        count = count + 1  
    g += 1 
print "The number above the average is:", count
于 2013-11-14T17:35:59.437 に答える
0

「また、ループを終了して if/else の else に何も入れたくない場合、何も変更しないように else に空のスペースが必要な場合は、何を入れればよいでしょうか?」

他の部分で何もしないようにパスを書くことができます。

可能な解決策は次のとおりです。

st_age = [0] * 3 
for g in range(0,3):
    st_age[g] = int(input("Enter student age "))

average = sum(st_age)/len(st_age)
print "the number above the average is:", sum([1 for eachAge in st_age if eachAge>average])
于 2013-11-14T17:38:11.017 に答える
0
  1. sum()すべてのリスト要素を合計するには、組み込み関数を使用できます。
  2. でサイクルしgますが、サイクル内で変更することはありませんg。つまり、gは常に 0 に等しく、whileサイクルは決して終了しません。
  3. リスト内包表記を使用すると、これをより簡単に記述できます。例えば:

print len(age for age in st_age if age > average)

于 2013-11-14T17:33:09.750 に答える