-2

Pythonプログラムの助けをいただければ幸いです。これはクリケット プログラムです。ユーザーにプレイするオーバー数を尋ね、ラン、ウィケット アウト、オーバーを追跡します。その部分は問題ありませんが、各バッターとランを追跡する方法がわかりません。一度に出られるバッターは 1 人だけで、オーバーごとにストライカー エンドを交換します。できれば助けてください。これまでのところ、バッターを追加するだけでよいプログラムの一部です。

for overs in range(1, numOvers + 1): 

  if endGame: #.........set to true from inner loop when breaking
            break

    print()
    print("---------------------------")
    print("Enter runs for over ", overs)
    print("---------------------------")

    #inner loop for number of balls in the over 
    for _runs in range(1, BALLS_IN_OVER + 1): 

      #calculate the number of overs and remainding balls
      totalBallsFaced += 1 
      totalOversFaced = (totalBallsFaced // BALLS_IN_OVER)    
      partOverFaced = (totalBallsFaced % BALLS_IN_OVER) 

      #print()
      runs = int(input("> ")) #...........prompt user for runs

      if runs < 0:#.......................if negative number, add to 1 to wicket
        wicket += 1
        print("Batter out...")

        if wicket >= 10:#...............if batter out and if all batters out then team out
          print("Batters all out")
          endGame = 1 #..............set to true
          break #.......................break to outer loop
      else: 
        total += runs #..................if input >= 0 , add to total

迅速なフィードバックに感謝します。私は両方のアイデアを考慮し、最終的に完成させました。得点指数 1 の打者と打者指数 2 の打者だけが他の打者であり、奇数の打者はただ入れ替わるだけです。

4

2 に答える 2

1

クリケットをする方法がわかりませんが、お手伝いできるかもしれません。

「各バッターとランを追跡する方法がわかりません。一度にアウトできるバッターは 1 人だけで、オーバーごとにストライカー エンドを交換します。明らかに奇数ランの場合です。」

すべての打者を追跡しようとしている場合は、タプルの配列を使用してみませんか? したがって、配列内の各エントリには (バッター、ラン、アウト、ストライカー) が含まれます。

打者の番号をbatter保持すると (削除して、最初の打者には配列位置 0 を使用し、2 番目の打者には 1 などを使用できます。打者ごとに名前や何かを保存するかどうかによって異なります)、

runs彼らが得たラン数を保持し、

outTrueそれらがアウトの場合はブール値Falseで、まだインの場合は、

striker別のブール値(クリケットはわかりませんが、交代で行うと言ったように聞こえるので、そのうちの1人はストライカーである必要があり、残りはストライカーではありません。)

次に、クリケットのルールが機能するか、または機能する場合outにのみ、ランをカウントし続けることができます。False

arr=[]
for i in range (num_of_batters):
     batter=input("Batter's name: ").strip()
     arr.append((batter,0,False,False))

それが役に立てば幸い

于 2012-05-14T14:58:34.280 に答える
0

リストが必要なようです。リストの各エントリは、特定の打者のラン数になります。したがって、コードは次のようになります。

runsPerBatter = [0] * 11 # this makes a list with 11 zero entries

変数を使用して、wicket打者を示すことができます (リストのインデックスは 0 から始まるため、wicketが 0 の場合、最初の打者があり、その打点を に入れますrunsPerBatter[0])。

...
else:
  total += runs
  runsPerBatter[wicket] += runs

次に、プログラムの最後に、打者ごとのランを印刷できます。

for i in range(11):
    print 'batsman', i + 1, 'made', runsPerBatter[i], 'runs'
于 2012-05-14T14:50:47.283 に答える