מודולים וספריות מאפשרים להרחיב את היכולות של פייתון מבלי לכתוב הכל מאפס.
- מודולים הם קבצי קוד מוכנים שמכילים פונקציות ושיטות לשימוש חוזר.
- ספריות פופולריות כמו
math
,random
, ו-os
משמשות למגוון רחב של משימות, כגון חישובים מתמטיים, עבודה עם קבצים, ויצירת מספרים אקראיים.
בפרויקטים גדולים, חשוב לארגן את הקוד בצורה מסודרת על ידי חלוקתו לקבצים נפרדים. זה מאפשר:
- ניהול קוד מסודר: קל יותר לעקוב אחרי קבצים קטנים וממוקדים.
- שימוש חוזר בקוד: ניתן לייבא פונקציות ומודולים שכתבתם בעצמכם לקבצים אחרים.
דוגמת קוד
# Importing and using the math module
import math
print("Math module example:")
radius = 5
area = math.pi * math.pow(radius, 2) # π * r^2
print(f"Area of a circle with radius {radius}: {area}")
# Importing and using the random module
import random
print("\nRandom module example:")
random_number = random.randint(1, 100) # Generate a random integer between 1 and 100
print(f"Random number between 1 and 100: {random_number}")
# Importing and using the os module
import os
print("\nOS module example:")
current_directory = os.getcwd() # Get the current working directory
print(f"Current directory: {current_directory}")
הסבר על הקוד
מודול math
:
math.pi
: קבוע של π (פאי).math.pow(radius, 2)
: מעלה אתradius
בריבוע.- השתמשנו בקבוע ובפונקציה כדי לחשב את שטח המעגל.
מודול random
:
random.randint(1, 100)
: מחזיר מספר אקראי בין 1 ל-100 (כולל).- שימושי ליצירת נתונים משתנים בצורה דינמית.
מודול os
:
os.getcwd()
: מחזיר את הנתיב לתיקייה הנוכחית שבה התוכנית רצה.- משמש לניהול קבצים וסביבות עבודה.
תרגילים
תרגיל 1:
השתמשו במודול math
כדי לחשב את שטח של מעגל עם רדיוס שהמשתמש מזין.
תרגיל 2:
כתבו תוכנית שמשתמשת במודול random
ליצירת רשימה של חמישה מספרים אקראיים בין 1 ל-50.
תרגיל 3:
בדקו את התיקייה הנוכחית שלכם בעזרת os.getcwd()
, ואז צרו קובץ חדש בתיקייה זו בעזרת os
.
תרגיל 4:
אתגר: השתמשו במודול random
כדי ליצור מספר אקראי בין 1 ל-10 ושאלו את המשתמש לנחש אותו.
תרגיל 5:
כתבו תוכנית שמשתמשת ב-math.sqrt
כדי לחשב את השורש הריבועי של מספר שהמשתמש מזין.
דוגמת קוד
קובץ math_utils.py
– קובץ עם פונקציות מתמטיות
# math_utils.py
def circle_area(radius):
"""Calculate the area of a circle given its radius."""
from math import pi
return pi * (radius ** 2)
def add_numbers(a, b):
"""Add two numbers."""
return a + b
קובץ main.py
– הקובץ הראשי שמייבא את math_utils
# main.py
import math_utils # Importing the custom module
print("Using math_utils module:")
radius = 5
print(f"Area of a circle with radius {radius}: {math_utils.circle_area(radius)}")
a, b = 3, 7
print(f"Sum of {a} and {b}: {math_utils.add_numbers(a, b)}")
הסבר על הקוד
- קובץ
math_utils.py
:- קובץ זה מכיל שתי פונקציות:
circle_area
לחישוב שטח מעגל ו-add_numbers
לחיבור שני מספרים. - פונקציות אלו זמינות לשימוש בכל קובץ אחר שייבא את
math_utils
.
- קובץ זה מכיל שתי פונקציות:
- קובץ
main.py
:- הקובץ הראשי מייבא את
math_utils
ומשתמש בפונקציות שהוגדרו בו. - ניתן לקרוא לפונקציות בצורה
math_utils.circle_area
כדי לציין את המקור שלהן.
- הקובץ הראשי מייבא את
הפרויקט הגדול: משחק הטריוויה
כעת נחלק את משחק הטריוויה למספר קבצים כדי לשפר את הארגון.
קובץ quiz_questions.py
# quiz_questions.py
import os
questions_file = "questions.txt"
def load_questions():
"""Load questions from a file."""
questions = {}
if not os.path.exists(questions_file): # Check if the file exists
print(f"{questions_file} not found. Creating an empty file.")
with open(questions_file, "w") as file:
pass # Create an empty file
else:
with open(questions_file, "r") as file:
for line in file:
question, answer = line.strip().split("||") # Split by separator
questions[question] = answer
return questions
def save_questions(questions):
"""Save questions to a file."""
with open(questions_file, "w") as file:
for question, answer in questions.items():
file.write(f"{question}||{answer}\n") # Use "||" as separator
קובץ quiz_game.py
# quiz_game.py
import random
from quiz_questions import load_questions, save_questions
def play_quiz(name, questions):
"""Play the quiz game using the global questions dictionary."""
score = 0 # Initialize score
randomized_questions = list(questions.items())
random.shuffle(randomized_questions) # Shuffle the list
# Loop through the questions
for question, correct_answer in randomized_questions:
print("\n" + question)
user_answer = input("Your answer: ").strip()
if str(user_answer).lower() == str(correct_answer).lower():
print("Correct!")
score += 1
else:
print("Wrong! The correct answer was:", correct_answer)
print("\nGame over!")
print(name, "your final score is:", score)
return score
קובץ main.py
# main.py
from quiz_questions import load_questions, save_questions
from quiz_game import play_quiz
def welcome():
"""Welcome the player and handle user flow."""
questions = load_questions()
print("Welcome to the Quiz Game!")
name = input("What is your name? ").strip()
if name.lower() == "admin":
manage_quiz(questions)
else:
play_quiz(name, questions)
def manage_quiz(questions):
"""Allow admin to manage questions."""
while True:
action = input("Do you want to 'add', 'remove', or 'done'? ").lower().strip()
if action == "done":
break
elif action == "add":
new_question = input("Enter a new question: ").strip()
new_answer = input("Enter the correct answer: ").strip()
questions[new_question] = new_answer
print("Question added!")
elif action == "remove":
question_to_remove = input("Enter the question to remove: ").strip()
if question_to_remove in questions:
del questions[question_to_remove]
print("Question removed!")
else:
print("Question not found.")
else:
print("Invalid option. Try again.")
save_questions(questions)
print("\nQuestions saved successfully!")
# Start the program
welcome()
שיפורים שנוספו לפרויקט:
- קובץ
quiz_questions.py
:- מכיל פונקציות לטעינת שאלות מקובץ ולשמירת שאלות לקובץ.
- קובץ
quiz_game.py
:- אחראי רק על ניהול המשחק (שאלת שאלות, חישוב ניקוד).
- קובץ
main.py
:- קובץ ראשי שמנהל את זרימת התוכנית.
- מודול
random
:- רשימת השאלות מתערבבת בסדר אקראי באמצעות
random.shuffle
.
- רשימת השאלות מתערבבת בסדר אקראי באמצעות
- מודול
os
:- פונקציית
os.path.exists
בודקת אם קובצי השאלות והניקוד קיימים, ויוצרת אותם אם לא.
- פונקציית