-2

我真的很感激python程序的一些帮助。这是一个板球程序;询问用户要玩的轮数,然后跟踪跑动、检票口和轮盘。那部分没问题,但我不知道如何跟踪每个击球手和跑动。一次只有一名击球手可以出去,他们在每次结束后交换前锋端,显然是为了奇怪的跑动。如果可以的话请帮忙。到目前为止,这是程序的一部分,我只需要添加击球手。

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

我不知道如何打板球,但我也许能帮上忙。

“我不知道如何跟踪每个击球手和跑动。一次只有一名击球手可以出去,他们在每次结束后交换前锋端,显然是为了奇怪的跑动。”

如果您想跟踪所有击球手,为什么不使用元组数组呢?所以数组中的每个条目都会有 (batter,runs,out,striker)

保持击球手的号码(可以删除,只需batter将数组位置 0 用于第一个击球手,将 1 用于第二个击球手等。取决于您是否要为每个击球手存储名称或其他内容),

runs拿着他们跑了多少次,

outTrue如果他们出局,False如果他们还在,则为布尔值,

striker另一个布尔值(我不知道板球,但听起来你说他们轮流所以他们中的一个需要成为前锋,而其他人则不是。)

然后,您只能在板球规则有效或无论如何有效的情况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 回答