2012-05-18 3 views
1

Мне нужна помощь с этой функцией. Я застрял.Глобальные списки Python

Мне нужно сделать три процесса, один из них - переключить каждого игрока на нечетные или даже запущенные входы, который работает, но я не могу понять, как заменить и заполнить нумератор batsmanName, относящийся к списку batsmanBatting, и если калитку переходит к следующему элементу в списке batsmanName (он добавляется пользователем, если выполняется калитка).

Окончательный процесс заключается в том, чтобы добавить оценки в batsmanRun соответствующий показатель для теста ватин, то есть если batsmanBatting[4] является «Т», то batsmanRun[4] должен накапливаться согласно.

Надеюсь, я объяснил это четко и имеет смысл, если бы не мог добавить дополнительную информацию, любая помощь была бы очень оценена.

def getRuns(totalScore): 

    global batsmanName #[] empty list a function adds a player if a wicket is taken 
    global batsmanRun #[0,0,0,0,0,0,0,0,0,0,0] #accumulators 
    global batsmanBatting #['F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F'] 
    global batsmanOnField #['F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F', 'F'] 
    global wickets 

    while(1): 
     try: 
      if(totalScore%2==0): 
       print(batsmanBatting) 
       runs=int(input("\nEnter runs for striker %s: " % batsmanName[0])) 
       batsmanRun[0]+=runs 
       print(batsmanRun) 
      else: 
       print(batsmanBatting) 
       runs=int(input("\nEnter runs for striker %s: " % batsmanName[1])) 
       batsmanRun[1]+=runs 
       print(batsmanRun) 
      if(runs<7):  
       return runs 
      else: 
       print("Invalid run(s) entered. Please try again.") 
     except Exception as err: 
       print(err) 
       print("Please try again.") 
+0

Дополнительная информация – cobie

+0

Любая конкретная деталь? Или просто вообще? – user1291271

+1

В целом .. пожалуйста, не могли бы вы ответить на следующее? откуда происходят события? Эта функция служит только для изменения глобальных переменных. В этом случае это не очень хорошая практика. вы должны изменить глобальные переменные в тех местах, где происходят события. Эта функция как бесконечный цикл приведет к высокому использованию процессора –

ответ

1

Чтобы добавить имя в batsmanName списке, вы

batsmanName.append('Mr Batsman') 

Если это правда заполнитель, то не используйте список, используйте None или пустую строку. В этом случае вам обновить его, назначив его:

batsmanName = 'Mr Batsman' 

Для вашего второго вопроса (вы действительно должны создавать отдельные вопросы по отдельности) не ясно, что «если batsmanBatting [4] является„T“, то batsmanRun [4] следует накапливаются согласно "средствам, но я предполагаю, что это означает:

for num, state in enumerate(batsmanBatting): 
    if state == 'T': 
     batsmanRun[num] += 1 

Возможно, есть лучшие способы сделать это. Или нет, я не знаю, крикет.

+0

Привет, Леннарт, добавив имя в список batsmanName, не проблема, он заполняет placeholder в функции getRuns() после того, как он был добавлен. Вы вроде как правы, я думаю, в крикете есть 11 игроков в общей сложности, 2 игрока на поле за один раз.Если игрок вычеркнул позицию игроков в списке, batsmanBatting переходит в «F», а следующее значение превращается в «T», чтобы означать, что следующий игрок ватин. batsmanField знаменует двух игроков на поле, поэтому он должен выглядеть так: batsmanOnField ['T', 'T', 'F', 'F', 'F', 'F', 'F', 'F', 'F ',' F ',' F '] – user1291271

+1

в этом цикле вы, вероятно, имели в виду batsmanRun [num] + = 1? – XORcist

+0

Да, lennart был прав, мне нужно использовать вложенные для циклов, я думаю, если состояние == Y, то добавляет прогоны к этому игроку. Теперь я должен изменить его, так что имя появляется только в том случае, если состояние == Y .. Все идеи ребята? – user1291271

Смежные вопросы