0

ユーザーに番号を入力してから、別の番号を入力するかどうかを尋ねるプログラムを作成しようとしています。彼らがプログラムに参加する数に基づいて、それらを合計し、それらの平均を与えます。

これが私がこれまでに持っているものですが、それが機能しないことを理解しています。どんな助けでも大歓迎です。

a = int(input("Enter a number: "))
more = input("Please enter Y or N if you want to add more numbers: ")

def funct(more):
    while more == "Y":
        b = int(input("Enter another number: "))
        abSum = a + b
        abMean = a + b / 2
        if more == "Y":
            return b
        else:
            break

    print(abSum)
    print(abMean)
4

5 に答える 5

3

簡略化すると、プログラムは次のようになります。

abSum = int(raw_input("Enter a number: "))

while raw_input("Please enter Y if you want to add more numbers or anything else to finish: ") == 'Y':
    b = int(raw_input("Enter another number: "))
    abSum = abSum + b
    abMean = abSum / 2

print(abSum)
print(abMean)

基本的に、ユーザーが2番目のプロンプトで行を入力して空にするまで、または他の何かを入力するまでループしてから、合計/平均を修正します。

実行しようとしているタスクに必ずしも別の関数が必要なわけではありません。たとえば宿題用の関数が必要な場合は、ピースを書き直して、の値を別の関数に渡し、ループ内からとbを更新しabSumabMean呼び出すことができます。while

ええと、申し訳ありませんが、私の例では実際には平均を計算していません。たとえば、入力された値の数を3番目の変数にカウントしてから、その量で割る必要があります。別の回答者は、あなたのケースで機能する可能性のある入力値のリストを使用したソリューションを提案しました。

于 2012-09-04T22:26:51.003 に答える
3

これをクリーンアップして、自己完結型のスクリプトに変換しました。

#!/usr/bin/env python

def ask_for_some_numbers():
    numbers = []
    more = 'y'
    while more.lower() == 'y':
        number = int(raw_input("Enter a number: "))
        numbers.append(number)
        more = raw_input("Please enter Y if you want to add more numbers: ")
    print (sum(numbers))
    print (sum(numbers)/len(numbers))
if __name__ == '__main__':
    ask_for_some_numbers()

違いは次のとおりです。

  • 私はリストを使用して数値を格納します(numbers = [])-そうすれば、任意の数を簡単に大量に持つことができます。
  • 関数を呼び出して、番号の入力を求め始めます。
  • raw_inputの代わりに使用しinputます。入力に関するドキュメントでは、入力内容を評価するため、ユーザーからの入力にraw_inputを使用することを推奨していますinput(悪意のあるユーザーがいる場合、これにより問題が発生する可能性があります)。
  • 組み込みのsum方法を使用して、リスト内の項目を合計します。
于 2012-09-04T22:27:56.673 に答える
1

次のようなものを試してください:

a = int(input("Enter a number: "))
more = input("Please enter Y or N if you want to add more numbers: ")
summ=a          #intialize sum to a
count=1         # no. of integers entered, to calculate mean
while more.lower()=="y":
    b = int(input("Enter another number: "))
    count+=1          #increase count by 1
    summ+= b          #add b to sum
    abMean = summ/float(count)         #used float(count) to get actual value

    print("sum=",summ)
    print("mean=",abMean)    
    more = input("Please enter Y or N if you want to add more numbers: ") #ask for user input
print("sum=",summ)
print("mean=",abMean)  

出力:

Enter a number: 5
Please enter Y or N if you want to add more numbers: y
Enter another number: 5
sum= 10
mean= 5.0
Please enter Y or N if you want to add more numbers: y
Enter another number: 2
sum= 12
mean= 4.0
Please enter Y or N if you want to add more numbers: y
Enter another number: 15
sum= 27
mean= 6.75
Please enter Y or N if you want to add more numbers: y
Enter another number: 10
sum= 37
mean= 7.4
Please enter Y or N if you want to add more numbers: n
sum= 37
mean= 7.4
于 2012-09-04T22:32:21.527 に答える
1

空白のエントリを取得するまで数値を要求し、その後、入力の合計と平均を出力するループする簡単なコードを次に示します。

total = 0
count = 0

num = input("Enter a number: ")

while (num):
    total += int(num)
    count += 1
    num = input("Enter another number (or a blank line to quit): ")

print("Total =", total)
print("Average =", total/count)
于 2012-09-04T22:34:18.267 に答える
0

どこかで関数を呼び出す必要はありませんか?

(未テスト)のようなもの:

if a and more=="Y":
    funct(more)
于 2012-09-04T22:22:29.153 に答える