Как сделать так, чтобы этот кусок кода, включающий функции, для циклов for и while хорошо работал? - PullRequest
1 голос
/ 22 марта 2012

Я делаю текстовую RPG, но у меня проблемы с вводом.Я поставлен в тупик при создании функции, которая должна отделять два аргумента от строки с ключевым словом и элементом (например: использовать элемент, принимать элемент ...), однако по некоторым причинам она продолжает повторять одно и то жеи более.

Мой код:

def console(input):
        x = 0
        y = 0
        z = 0
        argument1 = ""
        argument2 = ""
        for x in input:
                if input != " " and y != 1:
                        argument1 += input
                elif y != 1:
                        y = 1
                else:
                        argument2 += input
        print argument1
        print argument2

console("use item")

Вывод, который я получаю, когда запускаю код, таков: использовать itemuseне знаю, почему «use» и «item» находятся на одной строке, а также почему это повторяется в общей сложности восемь раз.

Ответы [ 3 ]

3 голосов
/ 22 марта 2012

Строковый метод split() уже делает то, что вы пытаетесь сделать:

>>> arg1, arg2 = 'use some item'.split(' ', 1)
>>> arg1
'use'
>>> arg2
'some item'
1 голос
/ 22 марта 2012

Вы делаете

for x in input:

Так что, если вход «использовать элемент», вы зациклились бы 8 раз (u, s, e,, i, t, e, m [попробуйте распечатать x]) И затем вы добавляете ввод к аргументу с

argument1 += input

Таким образом, вы добавляете ввод 8 раз к аргументу. Почему они складываются вместе, потому что в конце у вас нет '\ n'.

0 голосов
/ 22 марта 2012

Это повторяется 8 раз, потому что вы передаете 8 символов.Я бы предложил разбить строку на аргументы перед входом в цикл for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...