Lessons / Builder
Lectia 6
Simple Block Builder
Lesson -> blocks (markdown, code, quiz)Lesson Preview
Lectia 6
Lecția 6 - Funcții, parametri,
Funcții, parametri,
Markdown 2
MarkdownCONCEPT: Funcții
EXPLICAȚIE: Am folosit deja funcții precum len, print și input în programele noastre.
Acestea sunt funcții încorporate în Python și, prin urmare, sunt întotdeauna la dispoziția noastră, indiferent de mediul în care programăm. Puteți, de asemenea, să vă definiți propriile funcții.
Code 3
Codedef message():
print("This is my very own function!")
message()
Markdown 4
MarkdownCONCEPT: Parametri
EXPLICAȚIE: Funcțiile iau adesea unul sau mai mulți parametri, care pot afecta ceea ce face funcția.
De exemplu, funcțiile Python încorporate print și input iau ca parametri textul care urmează să fie afișat.
Code 5
Codeprint("Hi!")
name = input("What is your name? ")
print(name)
Markdown 6
MarkdownExercițiul 1
Creați o funcție care returnează prima literă a unui cuvânt.
Soluție:
Code 7
Codedef first_character(text):
return text[0]
# TEST:
print(first_character("python"))
print(first_character("yellow"))
Markdown 8
MarkdownExercițiul 2
Creați o funcție care ia trei parametri și returnează media acestor trei elemente.
Soluție:
Code 9
Codedef mean(a, b, c):
return (a + b + c) / 3
# TEST:
print(mean(5, 3, 1))
print(mean(10, 1, 1))
Markdown 10
MarkdownExercițiul 3
Scrieți o funcție numită print_many_times(text, times), care ia ca argumente un șir de caractere și un întreg. Argumentul întreg times specifică de câte ori ar trebui tipărit argumentul de tip șir de caractere.
Soluție:
Code 11
Codedef print_many_times(text, times):
i = 0
while i < times:
print(text)
i += 1
# TEST:
text = "All Pythons, except one, grow up"
times = 3
print_many_times(text, times)
Markdown 12
MarkdownExercițiul 4
Scrieți o funcție numită hash_square(lungime), care ia un argument întreg. Funcția afișează un pătrat de caractere diez (#), iar argumentul specifică lungimea laturii pătratului.
Soluție:
Code 13
Codedef hash_square(lungime):
i = 0
while i < lungime:
print("#" * lungime)
i += 1
# TESTS:
hash_square(3)
print()
hash_square(6)
Markdown 14
MarkdownExercițiul 5
Scrieți o funcție numită tabla_de_sah(marime), care afișează o tablă de șah făcută din unu și zero. Funcția acceptă un argument întreg, care specifică lungimea laturii tablei.
Soluție:
Code 15
Codedef tabla_de_sah(marime):
i = 0
while i < marime:
if i % 2 == 0:
row = "10" * marime
else:
row = "01" * marime
# Eliminăm caracterele în plus de la finalul rândului.
print(row[0:marime])
i += 1
# TEST:
tabla_de_sah(3)
print()
tabla_de_sah(6)
Markdown 16
MarkdownCONCEPT: return
EXPLICAȚIE: Funcțiile pot returna și valori.
De exemplu, input() returnează un șir de caractere introdus de utilizator.
Valoarea returnată de o funcție poate fi stocată într-o variabilă.
Code 17
Codeword = input("Please type in a word: ")
print(word)
Markdown 18
MarkdownExercițiul 6
Creați o funcție care cere utilizatorului să introducă un număr, convertește șirul de caractere primit în int și returnează numărul primit.
Funcția ar trebui să se numească get_input_number().
Soluție:
Code 19
Codedef get_input_number():
return int(input("Enter a number: "))
Markdown 20
MarkdownExercițiul 7
Creați o funcție care utilizează funcția de la exercițiul 6 pentru a cere utilizatorului un număr până când el introduce unul negativ. Numerele vor fi salvate într-o listă și returnate.
Soluție:
Code 21
Codedef get_numbers_list():
numbers = []
number = get_input_number()
while number >= 0:
numbers.append(number)
number = get_input_number()
return numbers
Markdown 22
MarkdownExercițiul 8
Creați o funcție care calculează și returnează valoarea maximă dintr-o listă. Funcția ar trebui să fie numită get_max().
Soluție:
Code 23
Codedef get_max(numbers):
if len(numbers) == 0:
return None
i = 0
max_value = numbers[0]
while i < len(numbers):
if numbers[i] > max_value:
max_value = numbers[i]
i += 1
return max_value
Markdown 24
MarkdownExercițiul 9
Creați o funcție care utilizează funcția de la exercițiul 8 pentru a găsi cel mai mare număr și a returna indecșii unde se găsește în listă. Funcția ar trebui să fie numită get_idx_max().
Soluție:
Code 25
Codedef get_idx_max(numbers):
max_value = get_max(numbers)
i = 0
indexes = []
while i < len(numbers):
if numbers[i] == max_value:
indexes.append(i)
i += 1
return indexes
Markdown 26
MarkdownExercițiul 10
Creați o funcție care ia ca parametri două liste.
Primul parametru este lista introdusă de utilizator, al doilea este lista de indici unde poate fi găsit maximul.
Returnați numerele chiar înainte și după fiecare maxim din listă.
Dacă nu există numere înainte sau după el, ar trebui să returneze 0. Funcția ar trebui să fie numită get_pre_post().
Soluție:
Code 27
Codedef get_pre_post(user_list, max_indexes):
i = 0
result = []
while i < len(max_indexes):
index = max_indexes[i]
if index == 0:
result.append(0)
if len(user_list) > 1:
result.append(user_list[1])
else:
result.append(0)
elif index == len(user_list) - 1:
result.append(user_list[len(user_list) - 2])
result.append(0)
else:
result.append(user_list[index - 1])
result.append(user_list[index + 1])
i += 1
return result
Markdown 28
MarkdownCONCEPT: Funcția find()
EXPLICAȚIE: Ia subșirul căutat ca argument și returnează fie primul index unde este găsit, fie -1 dacă subșirul nu este găsit în șir.
Code 29
Codeinput_string = "test"
print(input_string.find("t"))
print(input_string.find("x"))
print(input_string.find("es"))
print(input_string.find("ets"))
Markdown 30
MarkdownExercițiul 11
Creează un script care, folosind toate funcțiile create anterior, cere utilizatorului să introducă o listă, să găsească cel mai mare număr din acea listă și returnează o altă listă care să conțină numerele înainte și după maximul găsit în șir.
Soluție:
Code 31
Codenumbers = get_numbers_list()
max_indexes = get_idx_max(numbers)
result = get_pre_post(numbers, max_indexes)
print(result)
Markdown 32
MarkdownExercițiul 12
Rescrie exercițiul anterior fără a utiliza funcții.
Soluție:
Code 33
Codenumbers = []
number = int(input("Enter a number: "))
while number >= 0:
numbers.append(number)
number = int(input("Enter a number: "))
if len(numbers) == 0:
result = []
else:
i = 0
max_value = numbers[0]
while i < len(numbers):
if numbers[i] > max_value:
max_value = numbers[i]
i += 1
i = 0
indexes = []
while i < len(numbers):
if numbers[i] == max_value:
indexes.append(i)
i += 1
i = 0
result = []
while i < len(indexes):
index = indexes[i]
if index == 0:
result.append(0)
if len(numbers) > 1:
result.append(numbers[1])
else:
result.append(0)
elif index == len(numbers) - 1:
result.append(numbers[len(numbers) - 2])
result.append(0)
else:
result.append(numbers[index - 1])
result.append(numbers[index + 1])
i += 1
print(result)
Markdown 34
MarkdownDupă cum puteți observa, făcând totul dintr-o singură mișcare nu este cel mai bun mod de a aborda probleme complexe.
Urmărind multe linii de cod fără funcții, solicită destul de mult memoria noastră de scurtă durată.
Folosind funcții, ne permitem să reutilizăm codul în implementările viitoare ale unor probleme similare.
Markdown 35
MarkdownToate materialele acestui curs, împreună cu ghidul mentorului și al elevului, materialele de la workshop-uri și alte materiale primite sunt proprietatea exclusivă a Asociației Cartea Daliei. Distribuirea lor fără acordul organizației este strict interzisă.
How It Works
- Keep one lesson and add blocks in order.
- Use markdown for explanations.
- Use code for runnable Python snippets.
- Use quiz to create a question block.
- Upload .ipynb to bootstrap from existing notebooks.
Quiz note
Uploaded notebooks import markdown/code cells only. Quiz blocks are created inside the app.