Мой код работает, но без выходных данных, в чем проблема? - PullRequest
0 голосов
/ 03 июля 2019

В чем проблема?

Я даже попробовал это на старте, чтобы получить вывод

print("enter list elements")
arr = input()


def AlternateRearr(arr, n):

    arr.sort()

    v1 = list()
    v2 = list()

    for i in range(n):
        if (arr[i] % 2 == 0):
            v1.append(arr[i])

        else:
            v2.append(arr[i])

        index = 0
        i = 0
        j = 0
        Flag = False
 #set value to true is first element is even
        if (arr[0] % 2 == 0):
            Flag = True

#rearranging
        while(index < n):

            #if 1st elemnt is eevn
            if (Flag == True):
                arr[index] = v1[i]
                index += 1
                i+=1
                Flag = ~Flag

            else:
                arr[index] = v2[j]
                index +=1
                j += 1
                Flag = ~Flag


        for i in range(n):
            print(arr[i], end = "" )

            arr = [9, 8, 13, 2, 19, 14]
            n = len(arr)
            AlternateRearr(arr, n)
            print(AlternateRearr(arr))

Там нет ошибки. Просто код драйвера не работает, я думаю, нет вывода.

Ответы [ 3 ]

2 голосов
/ 03 июля 2019

нет выходов

Единственное место, где он может выводить что-либо - это print(AlternateRearr(arr)). Но давайте посмотрим на AlternateRearr сам - что он возвращает?

В AlternateRearr нет оператора возврата, поэтому print будет показывать None. Ну, это что-то , не совсем ничего ...


Но код все равно не доходит до этой части - если он это сделает, он выдаст ошибку, потому что print(AlternateRearr(arr)) передает только один аргумент функции AlternateRearr, которая принимает 2 аргумента. У вас не установлено значение по умолчанию для n, поэтому оно не будет работать.


Хорошо, мы пришли к выводу, что мы все равно не достигнем print. Но почему ? Потому что ты никогда не называешь это. Вы только определяете это, и это не то, что нужно называть.

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

0 голосов
/ 03 июля 2019

Вызовите функцию, а также передайте целое число для итерации. Добавьте после функции:

AlternateRearr(arr, 5)
0 голосов
/ 03 июля 2019

Это ваш полный код? Потому что у вас есть функция с именем AlternateRearr, но вы никогда не вызываете ее

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