5

5 つのテスト スコアを受け入れるために、次の for ループを設定しました。ユーザーに 5 つの異なるスコアを入力するように求めるループが必要です。「次のテストスコアを入力してください」という入力を書くことでこれを行うことができますが、入力されたスコアごとに関連する番号を求めるプロンプトが表示されるようにしたいと思います。

ですので、1回目の入力は「テスト1の点数を入力してください」、2回目の入力は「テスト2の点数を入力してください」と表示させたいです。このループを実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "C:/Python32/Assignment 7.2", line 35, in <module>
    main()
  File "C:/Python32/Assignment 7.2", line 30, in main
    scores = input_scores()
  File "C:/Python32/Assignment 7.2", line 5, in input_scores
    score = int(input('Please enter your score for test', y,' : '))
TypeError: input expected at most 1 arguments, got 3

これがコードです

def input_scores():
    scores = []
    y = 1
    for num in range(5):
        score = int(input('Please enter your score for test', y, ': '))

        while score < 0 or score > 100:
            print('Error --- all test scores must be between 0 and 100 points')
            score = int(input('Please try again: '))
        scores.append(score)
        y += 1
        return scores
4

2 に答える 2

8

あなたが望むものを書くための簡単な(そして正しい!)方法:

score = int(input('Please enter your score for test ' + str(y) + ': '))
于 2012-04-02T02:54:38.457 に答える
2

input は 1 つの引数しか必要とせず、3 つを指定しているため、魔法のようにそれらを結合することを期待しています :-)

次のように、3 つの部分からなる文字列をその 1 つの引数に組み込む必要があります。

input("Please enter your score for test %d: " % y)

これは、Python がsprintf-type 文字列を構築する方法です。例として、

"%d / %d = %d" % (42, 7, 42/7)

は、これら 3 つの式を 1 つの文字列に変換する方法"42 / 7 = 6"です。

この仕組みの説明については、こちらを参照してください。ここに示すより柔軟な方法を使用することもできます。これは次のように使用できます。

input("Please enter your score for test {0}: ".format(y))
于 2012-04-02T01:17:38.107 に答える