2016-07-07 3 views
1

Я пытаюсь создать программу «Броненосец».Создание строк и столбцов на основе ввода()

Это то, что у меня есть до сих пор.

class Start: 
    def play(rows, columns): 
     for i in rows: 
      for j in columns: 
       print("O") 
print("Testing") 
rowinput = input("rows: ") 
colinput = input("columns: ") 
s = start() 
s.play(rowinput, colinput) 

Это код ошибки я получаю:

Traceback (most recent call last): 
File "C:/Users/OfficeUser/Documents/battleship.py", line 12, in <module> 
s.play(rowinput, colinput) 
TypeError: play() takes 2 positional arguments but 3 were given 

Мой вопрос: Как я могу реализовать генерацию строк и столбцов на основе пользовательского ввода с помощью input()?

ответ

2

Методы экземпляров класса принимают экземпляр класса в качестве первого аргумента.

Добавить self в определение play. Экземпляр класса получает передается при вызове метода, так что вам нужно, чтобы справиться с этим в вашем определении метода:

def play(self, rows, columns): 
    #... 

Есть другие ошибки и ждет, чтобы уйти, как: вы должны будете отдать свой вклад в int , то вам нужно будет использовать range в ваших петель:

for i in range(rows): 
    for j in range(columns): 
     print("O") 
+0

У меня есть результат только «O» при добавлении себя. – kommander0000

+0

@ kommander0000 Какой результат вы ожидали? –

+0

на основе собранных данных, скажем, строка = 6 и столбец = 6, вы получите сетку 6x6 – kommander0000

0

при вызове s.play(rowinput, colinput), объект «s», также передается (неявно) к функции «игры» (как это первый аргумент). Это то, что ошибка говорит о том, что три аргумента передаются в функцию play, но подпись говорит, что она принимает только две. Теперь в python соглашение должно использовать имя «self» для параметра для экземпляра класса. Поэтому просто добавьте еще один параметр в функцию, например

def play(self, rows, columns): 
+0

Я получил результат только «O» при добавлении себя – kommander0000

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