Zadania z listami do rozwiązania

0

Witam , mam do rozwiązania 3 zadania, 2 samodzielnie zrobiłem i proszę o ocenę czy dobrze wykonane czy do poprawy i co do poprawy. A jednego zadania nie za bardzo rozumiem i proszę o nakierowanie mnie
Zadania muszą być w postaci funkcji.

1 zadanie:
ZADANIE 1. GENERATOR KODÓW POCZTOWYCH
przyjmuje 2 stringi: "79-900" i "80-155" i zwraca listę kodów pomiędzy nimi

string1 = "79-900"
string2 = "80-155"

def generator(arg1,arg2):

	generator_kodow = []
	generator_kodow.append(arg1)
	generator_kodow.append(arg2)
	print (generator_kodow)


generator(string1,string2)

2 zadanie:
ZADANIE 2. PODANA JEST LISTA ZAWIERAJĄCA ELEMENTY O WARTOŚCIACH 1-n. NAPISZ FUNKCJĘ KTÓRA SPRAWDZI JAKICH ELEMENTÓW BRAKUJE
1-n = [1,2,3,4,5,...,10]
np. n=10
wejście: [2,3,7,4,9], 10
wyjście: [1,5,6,8,10]

I tu nie bardzo rozumiem bo np jak mam wejście 10, to 1-n równa się -9 a nie 9 ( może być to błąd w treści zadania?)

i zadanie nr 3:
ZADANIE 3. NALEŻY WYGENEROWAĆ LISTĘ LICZB OD 2 DO 5.5 ZE SKOKIEM CO 0.5, DANE WYNIKOWE MUSZĄ BYĆ TYPU DECIMAL.

from decimal import *


def decimal():


	lista = []

	i = Decimal('2.0')

	while i < 6:
		lista.append(i)
		i += Decimal('0.5')

	print(lista)
	return;

decimal()
1

1-n to nie minus tylko 'do' od 1 do N ;)

np. n=10
wejście: [2,3,7,4,9], 10
wyjście: [1,5,6,8,10]

na wejsciu: tablica z liczbami ktore masz, drugi argument 10 mowi, ze liczby powinny byc od 1 do 10
na wyjsciu: tablica liczb ktorych brakuje w tablicy wejsciowej - tak zeby powstala tablica [1,2,3,4,5,6,7,8,9,10]

0

haha! za bardzo matematycznie podszedłem do tego, teraz już wszystko jasne dzięki! A pozostałe zadania są ok?

1

Niestety nie znam pythona ale postaram sie odpowiedziec:

Co jest wynikiem dzialania Twojego kodu w zadaniu 1?
Majac na wejsciu "79-900" i "80-155" ja spodziewalbym sie:
79-901, 79-902, ..., 80-153, 80-154
Patrzac na kod o ile nie dzieje sie tam jakas automagia to wynikiem jest tablica z dwoma kodami wejsciowymi.

Co do zadania 3, postaraj sie stworzyc metode ktora przyjmuje na wejsciu 3 parametry, start, stop i skok (2.0, 5.5, 0.5), wtedy jest bardziej elastyczna.
Liczbe iteracji musialbys wtedy liczyc, tak zeby nie hardkodowac tej 6 :)
A moze sa jakies specjalne metody z Pythona ktore pozwalaja na stworzenie takiego zakresu jedna linijka - ktos inny musialby sie wypowiedziec :)

0

Ok poprawiłem zadanie 1 i działa już tak jak napisałeś ;)

string1 = "79-900"
string2 = "80-155"


def generator(arg1,arg2):

	generator_kodow = []
	poczatek = None
	poczatek = arg1[0:2]
	poczatek +=arg1[3:7]
	poczatek = int(poczatek)
	poczatek += 1
	koniec = None
	koniec = arg2[0:2]
	koniec +=arg2[3:7]
	koniec = int(koniec)

	for i in range(poczatek,koniec,1):
		i = str(i)
		nowy = i[0:2] + "-" + i[2:5]
		generator_kodow.append(nowy)
	print (generator_kodow)


generator(string1,string2)

a w 3 niestety nie mogę użyć :

for i in range(Decimal('2.0'),Decimal('5.0'),Decimal('0.5')):

Bo typ zmiennej Decimal nie jest obsługiwany w metodzie range , tylko zmienne int są.

1
from decimal import Decimal


def z1(code1, code2):
    parse = lambda x: int(x.replace('-', ''))
    code1, code2 = parse(code1), parse(code2)
    return ["%02d-%03d" % divmod(x, 1000) for x in range(code1 + 1, code2)]


def z2(ns, n):
    return list(set(range(n)) - set(ns))


def z3():
    return [Decimal(20 + x * 5) / 10 for x in range(8)]


print(z1("79-900", "80-155"))
print(z2([1, 3, 4, 5, 6, 7, 8], 10))
print(z3())
2

zadanie 3

from numpy import *
l = arange(2,5.5001,0.5)
print(l)
0

źle macie to zadanie nr 1, nie ma kodów z końcówką -000. więc nie można sobie po prostu zrobić dwóch liczb z wejściowych stringów i machnąć for-a

1 użytkowników online, w tym zalogowanych: 0, gości: 1