Array Manipulation - 60 %
Здравейте,
в Упражненията на функциите, не мога повече да направя нищо със задачата, за да ми даде повече от 60 процента.
Кое толкова съм объркала или пропуснала?
Отделно не ми дава отново да видя какъв е инпутът на грешните тестове и нищо не мога да разбера.
Ето ми кода
import sys
array = input().split(" ")
array = [int(x) for x in array]
def manipulate(array):
command = input()
while command != "end":
args = command.split(" ")
command_name = args[0]
if command_name == "exchange":
index = int(args[1])
exchange(index, array)
elif command_name == "max":
parity = args[1]
max(parity, array)
elif command_name == "min":
parity = args[1]
min(parity, array)
elif command_name == "first":
count = int(args[1])
parity = args[2]
first(count, parity, array)
elif command_name == "last":
count = int(args[1])
parity = args[2]
last(count, parity, array)
command = input()
print(array)
def exchange(index, array):
if index >= len(array):
print("Invalid index")
return
new_array = array[index+1:] + array[:index+1]
for i, element in enumerate(new_array):
array[i] = element
def max(parity, array):
maximum = -sys.maxsize
max_index = -1
for i in range(len(array)-1, -1, -1):
val = array[i]
if val > maximum and parity_check(parity, val):
maximum = val
max_index = i
if max_index != -1:
print(max_index)
else:
print("No matches")
def min(parity, array):
minimum = sys.maxsize
min_index = -1
for i in range(len(array)-1, -1, -1):
val = array[i]
if val < minimum and parity_check(parity, val):
minimum = val
min_index = i
if min_index != -1:
print(min_index)
else:
print("No matches")
def first(count, parity, array):
if count > len(array):
print("Invalid count")
return
new_array = [x for x in array if parity_check(parity, x)]
if count < len(new_array):
print(new_array[:count])
else:
print(new_array)
def last(count, parity, array):
if count > len(array):
print("Invalid count")
return
new_array = [x for x in array if parity_check(parity, x)]
if count < len(new_array):
print(new_array[len(array) - count:])
else:
print(new_array)
def parity_check(parity, number):
if parity == 'even':
return number % 2 == 0
else:
return number % 2 != 0
manipulate(array)
Благодаря ти!
Успях да го докарам до 100 процента ;)
Примерите в упражнението не са ли грешни? Срещу exchange 1 - няма нищо в Output?.. Не знам, но всички zero - тестове според мен са грешни. Как успяхте да ги докарате до 100 %?..
Примерите са си верни. Output-а не е подравнен с Input-a. Примера за който мисля че говориш е:
1 3 5 7 9
exchange 1
max odd
min even
first 2 odd
last 2 even
exchange 3
end
2
No matches
[5, 7]
[]
[3, 5, 7, 9, 1]
2 се принтира като отговор на max odd; No matches се принтира като отговор на min even; [5, 7] е отг на first 2 odd; [] е отг на last 2 even; и [3, 5, 7, 9, 1] се принтира след end.
Благодаря за отговора! Аз си открих грешката по-късно - просто функцията exchange не трябва да принтира а само да размести масива и да го върне. А аз го принтирах и се чудех защо ми дава грешки... Успях да получа 100 %!
Благодаря още веднъж!