મુખ્ય સામગ્રી પર જાઓ
  1. સંસાધનો/
  2. અભ્યાસ સામગ્રી/
  3. ઇન્ફોર્મેશન ટેકનોલોજી એન્જિનિયરિંગ/
  4. આઈટી સેમેસ્ટર 2/

Advanced Python Programming (4321602) - Winter 2024 Solution (Gujarati)

27 મિનિટ· ·
અભ્યાસ-સામગ્રી ઉકેલો પાયથન 4321602 2024 શિયાળો
મિલવ ડબગર
લેખક
મિલવ ડબગર
ઇલેક્ટ્રિકલ અને ઇલેક્ટ્રોનિક મેન્યુફેક્ચરિંગ ઉદ્યોગમાં અનુભવી લેક્ચરર. એમ્બેડેડ સિસ્ટમ્સ, ઈમેજ પ્રોસેસિંગ, ડેટા સાયન્સ, મેટલેબ, પાયથન, STM32માં કુશળ. એલ.ડી. કોલેજ ઓફ એન્જિનિયરિંગ - અમદાવાદથી કમ્યુનિકેશન સિસ્ટમ્સ એન્જિનિયરિંગમાં માસ્ટર્સ ડિગ્રી ધરાવતા મજબૂત શિક્ષણ વ્યાવસાયિક.
અનુક્રમણિકા

પ્રશ્ન 1(અ) [3 માર્ક્સ]
#

પાયથનમાં સેટ અને ડિક્શનરી વચ્ચેનો તફાવત લખો.

જવાબ:

લક્ષણસેટડિક્શનરી
ડેટા સ્ટોરેજફક્ત યુનિક એલિમેન્ટ્સ સ્ટોર કરેકી-વેલ્યુ પેર સ્ટોર કરે
ક્રમઅનઓર્ડર્ડ કલેક્શનઓર્ડર્ડ (Python 3.7+)
ડુપ્લિકેટ્સડુપ્લિકેટ્સની મંજૂરી નથીકીઝ યુનિક હોવી જોઈએ
એક્સેસઈન્ડેક્સ દ્વારા એક્સેસ કરી શકાતું નથીકીઝ દ્વારા વેલ્યુઝ એક્સેસ કરવા
સિન્ટેક્સ{1, 2, 3}{'key': 'value'}
  • સેટ: યુનિક, અનઓર્ડર્ડ એલિમેન્ટ્સનો કલેક્શન
  • ડિક્શનરી: યુનિક કીઝ સાથે કી-વેલ્યુ પેરનો કલેક્શન

મેમરી ટ્રીક: “સેટ્સ યુનિક, ડિક્ટ્સ કીઝ વાળા”

પ્રશ્ન 1(બ) [4 માર્ક્સ]
#

પાયથોનમાં લિસ્ટ ઉદાહરણ સાથે સમજાવો.

જવાબ:

લિસ્ટ એક ઓર્ડર્ડ, મ્યુટેબલ કલેક્શન છે જે વિવિધ ડેટા ટાઈપ્સ સ્ટોર કરી શકે છે.

લિસ્ટ ઓપરેશન્સનું ટેબલ:

ઓપરેશનસિન્ટેક્સઉદાહરણ
બનાવવુંlist_name = []fruits = ['apple', 'banana']
એક્સેસlist[index]fruits[0] રિટર્ન ‘apple’
ઉમેરવુંappend()fruits.append('orange')
હટાવવુંremove()fruits.remove('apple')
# ઉદાહરણ
numbers = [1, 2, 3, 4, 5]
numbers.append(6)  # [1, 2, 3, 4, 5, 6]
print(numbers[0])  # આઉટપુટ: 1
  • ઓર્ડર્ડ: એલિમેન્ટ્સ તેમની પોઝિશન જાળવે છે
  • મ્યુટેબલ: બનાવ્યા પછી મોડિફાઈ કરી શકાય છે
  • ફ્લેક્સિબલ: કોઈપણ ડેટા ટાઈપ સ્ટોર કરે છે

મેમરી ટ્રીક: “લિસ્ટ્સ ઓર્ડર્ડ અને મોડિફાઈ કરી શકાય તેવી”

પ્રશ્ન 1(ક) [7 માર્ક્સ]
#

પાયથોનમાં ટપલ શું છે? બે ટપલ વેલ્યુને અદલાબદલી કરવાનો પાયથન પ્રોગ્રામ લખો.

જવાબ:

ટપલ એક ઓર્ડર્ડ, ઈમ્યુટેબલ કલેક્શન છે જે મલ્ટિપલ આઈટમ્સ સ્ટોર કરે છે.

ટપલના લક્ષણોનું ટેબલ:

પ્રોપર્ટીવર્ણનઉદાહરણ
ઈમ્યુટેબલબનાવ્યા પછી બદલી શકાતું નથીt = (1, 2, 3)
ઓર્ડર્ડએલિમેન્ટ્સનો નિર્ધારિત ક્રમઈન્ડેક્સ દ્વારા એક્સેસ
ડુપ્લિકેટ્સડુપ્લિકેટ વેલ્યુઝની મંજૂરી(1, 1, 2)
ઈન્ડેક્સિંગપોઝિશન દ્વારા એલિમેન્ટ્સ એક્સેસt[0]
# બે ટપલ વેલ્યુઝને સ્વેપ કરવાનો પ્રોગ્રામ
def swap_tuple_values(tup, pos1, pos2):
    # સ્વેપિંગ માટે ટપલને લિસ્ટમાં કન્વર્ટ કરો
    temp_list = list(tup)
    
    # વેલ્યુઝ સ્વેપ કરો
    temp_list[pos1], temp_list[pos2] = temp_list[pos2], temp_list[pos1]
    
    # પાછું ટપલમાં કન્વર્ટ કરો
    return tuple(temp_list)

# ઉદાહરણ ઉપયોગ
original_tuple = (10, 20, 30, 40, 50)
print("મૂળ ટપલ:", original_tuple)

# પોઝિશન 1 અને 3 પર વેલ્યુઝ સ્વેપ કરો
swapped_tuple = swap_tuple_values(original_tuple, 1, 3)
print("સ્વેપિંગ પછી:", swapped_tuple)
  • ઈમ્યુટેબલ: એકવાર બનાવ્યા પછી મોડિફાઈ કરી શકાતું નથી
  • ઓર્ડર્ડ: એલિમેન્ટ સિક્વન્સ જાળવે છે
  • હેટેરોજીનિયસ: વિવિધ ડેટા ટાઈપ્સ સ્ટોર કરી શકે છે

મેમરી ટ્રીક: “ટપલ્સ ઈમ્યુટેબલ અને ઓર્ડર્ડ”

પ્રશ્ન 1(ક OR) [7 માર્ક્સ]
#

પાયથોનમાં ડિક્શનરી શું છે? લૂપની મદદથી ડિક્શનરીને ટ્રાવર્સ કરવાનો પાયથન પ્રોગ્રામ લખો.

જવાબ:

ડિક્શનરી એક યુનિક કીઝ સાથે કી-વેલ્યુ પેરનો અનઓર્ડર્ડ કલેક્શન છે.

ડિક્શનરી મેથડ્સનું ટેબલ:

મેથડહેતુઉદાહરણ
keys()બધી કીઝ મેળવોdict.keys()
values()બધી વેલ્યુઝ મેળવોdict.values()
items()કી-વેલ્યુ પેર મેળવોdict.items()
get()સેફ કી એક્સેસdict.get('key')
# લૂપ વાપરીને ડિક્શનરી ટ્રાવર્સ કરવાનો પ્રોગ્રામ
student_marks = {
    'Alice': 85,
    'Bob': 92,
    'Charlie': 78,
    'Diana': 96,
    'Eve': 89
}

print("ડિક્શનરી ટ્રાવર્સલ મેથડ્સ:")
print("-" * 30)

# મેથડ 1: ફક્ત કીઝ ટ્રાવર્સ કરો
print("1. ફક્ત કીઝ:")
for key in student_marks:
    print(f"   {key}")

# મેથડ 2: ફક્ત વેલ્યુઝ ટ્રાવર્સ કરો
print("\n2. ફક્ત વેલ્યુઝ:")
for value in student_marks.values():
    print(f"   {value}")

# મેથડ 3: કી-વેલ્યુ પેર ટ્રાવર્સ કરો
print("\n3. કી-વેલ્યુ પેર:")
for key, value in student_marks.items():
    print(f"   {key}: {value}")

# મેથડ 4: keys() મેથડ વાપરીને
print("\n4. keys() મેથડ વાપરીને:")
for key in student_marks.keys():
    print(f"   {key} ને {student_marks[key]} માર્ક્સ મળ્યા")
  • કી-વેલ્યુ સ્ટોરેજ: દરેક કી એક વેલ્યુ સાથે મેપ થાય છે
  • યુનિક કીઝ: ડુપ્લિકેટ કીઝની મંજૂરી નથી
  • ફાસ્ટ લુકઅપ: O(1) એવરેજ ટાઈમ કોમ્પ્લેક્સિટી

મેમરી ટ્રીક: “ડિક્ટ્સ કીઝને વેલ્યુઝ સાથે મેપ કરે”

પ્રશ્ન 2(અ) [3 માર્ક્સ]
#

પેકેજ શું છે? પેકેજનો ઉપયોગ કરવાના ફાયદાઓની યાદી આપો.

જવાબ:

પેકેજ એક ડિરેક્ટરી છે જેમાં મલ્ટિપલ મોડ્યુલ્સ એકસાથે ઓર્ગેનાઈઝ કરવામાં આવે છે.

પેકેજના ફાયદાઓનું ટેબલ:

ફાયદોવર્ણન
ઓર્ગેનાઈઝેશનસંબંધિત મોડ્યુલ્સને એકસાથે ગ્રુપ કરે
નેમસ્પેસનામિંગ કોન્ફ્લિક્ટ્સ ટાળે
રીયુઝેબિલિટીકોડ પ્રોજેક્ટ્સમાં ફરીથી વાપરી શકાય
મેઈન્ટેનેબિલિટીમોટા કોડબેસ મેનેજ કરવું સરળ
ડિસ્ટ્રિબ્યુશનશેર કરવું અને ઈન્સ્ટોલ કરવું સરળ
  • મોડ્યુલર સ્ટ્રક્ચર: વધુ સારું કોડ ઓર્ગેનાઈઝેશન
  • હાયરાર્કિકલ નેમસ્પેસ: નેમ કોન્ફ્લિક્ટ્સ અટકાવે
  • કોડ રીયુઝ: સોફ્ટવેર રીયુઝેબિલિટીને પ્રમોટ કરે

મેમરી ટ્રીક: “પેકેજિસ રિલેટેડ મોડ્યુલ્સ ઓર્ગેનાઈઝ કરે”

પ્રશ્ન 2(બ) [4 માર્ક્સ]
#

કોઈપણ બે પેકેજ આયાત પદ્ધતિઓ ઉદાહરણો સાથે સમજાવો.

જવાબ:

આયાત મેથડ્સનું ટેબલ:

મેથડસિન્ટેક્સઉપયોગ
નોર્મલ આયાતimport package.moduleફુલ પાથ સાથે એક્સેસ
ફ્રમ આયાતfrom package import moduleડાયરેક્ટ મોડ્યુલ એક્સેસ
સ્પેસિફિક આયાતfrom package.module import functionસ્પેસિફિક આઈટમ્સ આયાત
વાઈલ્ડકાર્ડ આયાતfrom package import *બધા મોડ્યુલ્સ આયાત
# મેથડ 1: નોર્મલ આયાત
import mypackage.calculator
result = mypackage.calculator.add(5, 3)
print(f"નોર્મલ આયાત પરિણાม: {result}")

# મેથડ 2: ફ્રમ આયાત
from mypackage import calculator
result = calculator.multiply(4, 6)
print(f"ફ્રમ આયાત પરિણાม: {result}")
  • નોર્મલ આયાત: ફુલ પેકેજ પાથ જરૂરી
  • ફ્રમ આયાત: ડાયરેક્ટ મોડ્યુલ એક્સેસની મંજૂરી
  • સ્પેસિફિક ફંક્શન આયાત: ફક્ત જરૂરી ફંક્શન્સ આયાત

મેમરી ટ્રીક: “આયાત નોર્મલી અથવા પેકેજથી”

પ્રશ્ન 2(ક) [7 માર્ક્સ]
#

ઈન્ટ્રા-પેકેજ સંદર્ભ વિશે ઉદાહરણ સાથે સમજાવો.

જવાબ:

ઈન્ટ્રા-પેકેજ રેફરન્સ પેકેજની અંદરના મોડ્યુલ્સને એકબીજાથી આયાત કરવાની મંજૂરી આપે છે.

પેકેજ સ્ટ્રક્ચરનો ડાયાગ્રામ:

mypacmuk_ataitignhlei_bash/to_ad/_e_pisil_snianp./icniept.ctry_pe_s_yd_....ppppyyyy

રેફરન્સ ટાઈપ્સનું ટેબલ:

ટાઈપસિન્ટેક્સઉપયોગ
એબ્સોલ્યુટfrom mypackage.math_ops import basicપેકેજ રૂટથી ફુલ પાથ
રિલેટિવfrom . import basicવર્તમાન પેકેજ
પેરન્ટfrom .. import utilsપેરન્ટ પેકેજ
સિબલિંગfrom ..utils import helpersસિબલિંગ પેકેજ
# પેકેજ સ્ટ્રક્ચર ઉદાહરણ
# mypackage/math_ops/advanced.py
from . import basic  # સેમ પેકેજથી રિલેટિવ આયાત
from ..utils import helpers  # સિબલિંગ પેકેજથી આયાત

def power_operation(base, exp):
    # બેસિક મોડ્યુલથી ફંક્શન વાપરીને
    if basic.is_valid_number(base) and basic.is_valid_number(exp):
        result = base ** exp
        # હેલ્પર ફંક્શન વાપરીને
        return helpers.format_result(result)
    return None

# mypackage/math_ops/basic.py
def is_valid_number(num):
    return isinstance(num, (int, float))

def add(a, b):
    return a + b

# mypackage/utils/helpers.py
def format_result(value):
    return f"પરિણાम: {value:.2f}"
  • રિલેટિવ આયાત્સ: વર્તમાન પેકેજ માટે ડોટ્સ (.) વાપરો
  • એબ્સોલ્યુટ આયાત્સ: ફુલ પેકેજ પાથ
  • પેકેજ હાયરાર્કી: ડોટ નોટેશન વાપરીને નેવિગેટ કરો

મેમરી ટ્રીક: “ડોટ્સ પેકેજ લેવલ્સ નેવિગેટ કરે”

પ્રશ્ન 2(અ OR) [3 માર્ક્સ]
#

મોડ્યુલ શું છે? મોડ્યુલનો ઉપયોગ કરવાના ફાયદાઓની યાદી આપો.

જવાબ:

મોડ્યુલ એક Python ફાઈલ છે જેમાં ડેફિનિશન્સ, સ્ટેટમેન્ટ્સ અને ફંક્શન્સ હોય છે.

મોડ્યુલના ફાયદાઓનું ટેબલ:

ફાયદોવર્ણન
કોડ રીયુઝેબિલિટીએકવાર લખો, અનેક વાર વાપરો
નેમસ્પેસફંક્શન્સ માટે અલગ નેમસ્પેસ
ઓર્ગેનાઈઝેશનવધુ સારું કોડ સ્ટ્રક્ચર
મેઈન્ટેનેબિલિટીડિબગ અને અપડેટ કરવું સરળ
કોલેબોરેશનમલ્ટિપલ ડેવલપર્સ કામ કરી શકે
  • રીયુઝેબલ કોડ: ફંક્શન્સ ગમે ત્યાં આયાત કરી શકાય
  • મોડ્યુલર ડિઝાઈન: મોટા પ્રોગ્રામ્સને નાના ભાગોમાં વહેંચો
  • સરળ મેઈન્ટેનન્સ: એક જગ્યાએ ફેરફાર બધી આયાત્સને અસર કરે

મેમરી ટ્રીક: “મોડ્યુલ્સ કોડ રીયુઝેબલ બનાવે”

પ્રશ્ન 2(બ OR) [4 માર્ક્સ]
#

કોઈપણ બે મોડ્યુલ આયાત પદ્ધતિ ઉદાહરણ સાથે સમજાવો.

જવાબ:

મોડ્યુલ આયાત મેથડ્સનું ટેબલ:

મેથડસિન્ટેક્સએક્સેસ પેટર્ન
ડાયરેક્ટ આયાતimport module_namemodule_name.function()
ફ્રમ આયાતfrom module_name import functionfunction()
એલિયાસ આયાતimport module_name as aliasalias.function()
વાઈલ્ડકાર્ડ આયાતfrom module_name import *function()
# મેથડ 1: ડાયરેક્ટ આયાત
import math
result1 = math.sqrt(16)
print(f"ડાયરેક્ટ આયાત: {result1}")

# મેથડ 2: ફ્રમ આયાત
from math import pi, sin
result2 = sin(pi/2)
print(f"ફ્રમ આયાત: {result2}")
  • ડાયરેક્ટ આયાત: મોડ્યુલ નામ પ્રીફિક્સ સાથે એક્સેસ
  • ફ્રમ આયાત: પ્રીફિક્સ વગર ડાયરેક્ટ ફંક્શન એક્સેસ
  • નેમસ્પેસ કંટ્રોલ: યોગ્ય આયાત મેથડ પસંદ કરો

મેમરી ટ્રીક: “આયાત ડાયરેક્ટલી અથવા મોડ્યુલથી”

પ્રશ્ન 2(ક OR) [7 માર્ક્સ]
#

વતુળનું ક્ષેત્રફળ અને પરિઘ શોધવા માટેના મોડ્યુલનો પ્રોગ્રામ લખો.

જવાબ:

# circle_operations.py (મોડ્યુલ ફાઈલ)
import math

def area(radius):
    """વતુળનું ક્ષેત્રફળ ગણો"""
    if radius <= 0:
        return 0
    return math.pi * radius * radius

def circumference(radius):
    """વતુળનો પરિઘ ગણો"""
    if radius <= 0:
        return 0
    return 2 * math.pi * radius

def display_info(radius):
    """વતુળની માહિતી દર્શાવો"""
    print(f"ત્રિજ્યા {radius} વાળું વતુળ:")
    print(f"ક્ષેત્રફળ: {area(radius):.2f}")
    print(f"પરિઘ: {circumference(radius):.2f}")

# કોન્સ્ટન્ટ્સ
PI = math.pi

# અ) મોડ્યુલને બીજા પ્રોગ્રામમાં આયાત કરો

# main_program.py
import circle_operations

radius = 5
print("મેથડ 1: સંપૂર્ણ મોડ્યુલ આયાત")
area_result = circle_operations.area(radius)
circumference_result = circle_operations.circumference(radius)

print(f"ક્ષેત્રફળ: {area_result:.2f}")
print(f"પરિઘ: {circumference_result:.2f}")

# બ) મોડ્યુલમાંથી બીજા પ્રોગ્રામમાં ચોક્કસ ફંક્શન આયાત કરો
# specific_import.py
from circle_operations import area, circumference

radius = 7
print("\nમેથડ 2: ચોક્કસ ફંક્શન્સ આયાત")
area_result = area(radius)
circumference_result = circumference(radius)

print(f"ક્ષેત્રફળ: {area_result:.2f}")
print(f"પરિઘ: {circumference_result:.2f}")

મોડ્યુલ ફીચર્સનું ટેબલ:

ફીચરઇમ્પ્લિમેન્ટેશન
ફંક્શન્સarea(), circumference()
એરર હેન્ડલિંગનેગેટિવ ત્રિજ્યા માટે ચેક
કોન્સ્ટન્ટ્સPI વેલ્યુ
ડોક્યુમેન્ટેશનફંક્શન ડોકસ્ટ્રિંગ્સ
  • મોડ્યુલ બનાવવું: ફંક્શન્સને .py ફાઈલમાં સેવ કરો
  • આયાત લવચીકતા: સંપૂર્ણ મોડ્યુલ અથવા ચોક્કસ ફંક્શન્સ
  • કોડ રીયુઝ: એક જ ફંક્શન્સ મલ્ટિપલ પ્રોગ્રામ્સમાં વાપરો

મેમરી ટ્રીક: “મોડ્યુલ્સમાં રીયુઝેબલ ફંક્શન્સ હોય”

પ્રશ્ન 3(અ) [3 માર્ક્સ]
#

પાયથોનમાં ભૂલના પ્રકારો સમજાવો.

જવાબ:

Python એરર ટાઈપ્સનું ટેબલ:

એરર ટાઈપવર્ણનઉદાહરણ
સિન્ટેક્સ એરરખોટું Python સિન્ટેક્સકોલન : ભૂલી જવું
રનટાઈમ એરરએક્ઝિક્યુશન દરમિયાન થાયશૂન્યથી ભાગાકાર
લોજિકલ એરરખોટું પ્રોગ્રામ લોજિકખોટું અલ્ગોરિધમ
નેમ એરરઅંડિફાઈન્ડ વેરિએબલઅઘોષિત વેરિએબલ વાપરવું
ટાઈપ એરરખોટું ડેટા ટાઈપ ઓપરેશનસ્ટ્રિંગ + ઇન્ટિજર
  • સિન્ટેક્સ એરર: પ્રોગ્રામ રન થાય તે પહેલાં શોધાય
  • રનટાઈમ એરર: પ્રોગ્રામ એક્ઝિક્યુશન દરમિયાન થાય
  • લોજિકલ એરર: પ્રોગ્રામ રન થાય પણ ખોટા પરિણામ આપે

મેમરી ટ્રીક: “સિન્ટેક્સ, રનટાઈમ, લોજિક એરર્સ”

પ્રશ્ન 3(બ) [4 માર્ક્સ]
#

યુઝર-ડિફાઈન્ડ એક્સેપ્શન રેઈઝ સ્ટેટમેન્ટ સાથે સમજાવો.

જવાબ:

યુઝર-ડિફાઈન્ડ એક્સેપ્શન્સ પ્રોગ્રામર્સ દ્વારા બનાવવામાં આવેલા કસ્ટમ એરર ક્લાસીસ છે.

એક્સેપ્શન કોમ્પોનન્ટ્સનું ટેબલ:

કોમ્પોનન્ટહેતુઉદાહરણ
ક્લાસ ડેફિનિશનકસ્ટમ એક્સેપ્શન બનાવોclass CustomError(Exception):
રેઈઝ સ્ટેટમેન્ટએક્સેપ્શન ટ્રિગર કરોraise CustomError("message")
એરર મેસેજસમસ્યાનું વર્ણનમાહિતીપ્રદ ટેક્સ્ટ
એક્સેપ્શન હેન્ડલિંગકસ્ટમ એક્સેપ્શન પકડોexcept CustomError:
# કસ્ટમ એક્સેપ્શન ડિફાઈન કરો
class AgeValidationError(Exception):
    def __init__(self, age, message="અયોગ્ય વય આપેલ છે"):
        self.age = age
        self.message = message
        super().__init__(self.message)

def validate_age(age):
    if age < 0:
        raise AgeValidationError(age, "વય નેગેટિવ હોઈ શકે નહીં")
    elif age > 150:
        raise AgeValidationError(age, "વય 150 કરતાં વધુ હોઈ શકે નહીં")
    else:
        print(f"યોગ્ય વય: {age}")

# કસ્ટમ એક્સેપ્શનનો ઉપયોગ
try:
    validate_age(-5)
except AgeValidationError as e:
    print(f"એરર: {e.message}, વય: {e.age}")
  • કસ્ટમ એક્સેપ્શન ક્લાસ: Exception થી ઇન્હેરિટ કરે
  • રેઈઝ સ્ટેટમેન્ટ: મેન્યુઅલી એક્સેપ્શન્સ ટ્રિગર કરે
  • અર્થપૂર્ણ મેસેજિસ: ડિબગિંગમાં મદદ કરે

મેમરી ટ્રીક: “વેલિડેશન માટે કસ્ટમ એક્સેપ્શન રેઈઝ કરો”

પ્રશ્ન 3(ક) [7 માર્ક્સ]
#

ટ્રાય-એક્સેપ્ટ-ફાઈનલી ક્લોઝ ઉદાહરણ સાથે સમજાવો.

જવાબ:

ટ્રાય-એક્સેપ્ટ-ફાઈનલી સંપૂર્ણ એક્સેપ્શન હેન્ડલિંગ મિકેનિઝમ પૂરું પાડે છે.

એક્સેપ્શન હેન્ડલિંગ બ્લોક્સનું ટેબલ:

બ્લોકહેતુએક્ઝિક્યુશન
tryએક્સેપ્શન ઉઠાવી શકે તેવો કોડહંમેશા પહેલા એક્ઝિક્યુટ
exceptચોક્કસ એક્સેપ્શન્સ હેન્ડલ કરેફક્ત એક્સેપ્શન આવે તો
elseકોઈ એક્સેપ્શન નહીં આવે ત્યારેફક્ત કોઈ એક્સેપ્શન નહીં આવે તો
finallyક્લીનઅપ કોડહંમેશા એક્ઝિક્યુટ થાય
# સંપૂર્ણ એક્સેપ્શન હેન્ડલિંગ ઉદાહરણ
def divide_numbers():
    try:
        print("ભાગાકાર ઓપરેશન શરૂ કરી રહ્યા છીએ...")
        
        # યુઝરથી ઇનપુટ મેળવો
        num1 = float(input("પહેલો નંબર દાખલ કરો: "))
        num2 = float(input("બીજો નંબર દાખલ કરો: "))
        
        # ભાગાકાર કરો
        result = num1 / num2
        
    except ValueError:
        print("એરર: કૃપા કરીને ફક્ત યોગ્ય નંબર્સ દાખલ કરો")
        return None
        
    except ZeroDivisionError:
        print("એરર: શૂન્યથી ભાગાકાર કરી શકાતો નથી")
        return None
        
    except Exception as e:
        print(f"અનપેક્ષિત એરર આવ્યું: {e}")
        return None
        
    else:
        print(f"ભાગાકાર સફળ: {num1} ÷ {num2} = {result}")
        return result
        
    finally:
        print("ભાગાકાર ઓપરેશન પૂર્ણ")
        print("રિસોર્સિસ ક્લીન કરી રહ્યા છીએ...")

# ઉદાહરણ ઉપયોગ
result = divide_numbers()
if result:
    print(f"અંતિમ પરિણાম: {result}")

ફ્લો ડાયાગ્રામ:

flowchart TD
    A[try block] --> B{એક્સેપ્શન આવ્યું?}
    B -->|હા| C[except block]
    B -->|ના| D[else block]
    C --> E[finally block]
    D --> E
    E --> F[અંત]
  • try: જોખમી કોડ હોય છે
  • except: ચોક્કસ એરર્સ હેન્ડલ કરે
  • finally: ક્લીનઅપ માટે હંમેશા એક્ઝિક્યુટ થાય

મેમરી ટ્રીક: “ટ્રાય-એક્સેપ્ટ-ફાઈનલી હંમેશા ક્લીન કરે”

પ્રશ્ન 3(અ OR) [3 માર્ક્સ]
#

બિલ્ટ-ઇન એક્સેપ્શન શું છે? કોઇ પણ બેની તેમના અર્થ સાથે યાદી બનાવો.

જવાબ:

બિલ્ટ-ઇન એક્સેપ્શન્સ Python માં પૂર્વ-નિર્ધારિત એરર ટાઈપ્સ છે.

બિલ્ટ-ઇન એક્સેપ્શન્સનું ટેબલ:

એક્સેપ્શનઅર્થઉદાહરણ
ValueErrorયોગ્ય ટાઈપ પણ અમાન્ય વેલ્યુint("abc")
TypeErrorખોટું ડેટા ટાઈપ ઓપરેશન"5" + 5
IndexErrorલિસ્ટ ઇન્ડેક્સ રેન્જની બહાર5-આઇટમ લિસ્ટ માટે list[10]
KeyErrorડિક્શનરી કી મળી નહીંdict["missing_key"]
ZeroDivisionErrorશૂન્યથી ભાગાકાર10 / 0

બે મુખ્ય બિલ્ટ-ઇન એક્સેપ્શન્સ:

  • ValueError: જ્યારે ફંક્શનને યોગ્ય ટાઈપ પણ અમાન્ય વેલ્યુ મળે
  • TypeError: જ્યારે અયોગ્ય ડેટા ટાઈપ પર ઓપરેશન કરવામાં આવે

મેમરી ટ્રીક: “બિલ્ટ-ઇન એક્સેપ્શન્સ સામાન્ય એરર્સ હેન્ડલ કરે”

પ્રશ્ન 3(બ OR) [4 માર્ક્સ]
#

ટ્રાય-એક્સેપ્ટ ક્લોઝ ઉદાહરણ સાથે સમજાવો.

જવાબ:

ટ્રાય-એક્સેપ્ટ પ્રોગ્રામ એક્ઝિક્યુશન દરમિયાન આવી શકે તેવા એક્સેપ્શન્સ હેન્ડલ કરે છે.

એક્સેપ્શન હેન્ડલિંગનું ટેબલ:

કોમ્પોનન્ટહેતુસિન્ટેક્સ
tryનિષ્ફળ થઈ શકે તેવો કોડtry:
exceptચોક્કસ એક્સેપ્શન હેન્ડલ કરેexcept ErrorType:
મલ્ટિપલ exceptવિવિધ એરર્સ હેન્ડલ કરેમલ્ટિપલ except બ્લોક્સ
જનરલ exceptકોઈપણ એક્સેપ્શન પકડેexcept:
# ટ્રાય-એક્સેપ્ટ ક્લોઝનું ઉદાહરણ
def safe_division():
    try:
        # એક્સેપ્શન્સ ઉઠાવી શકે તેવો કોડ
        dividend = int(input("ભાજ્ય દાખલ કરો: "))
        divisor = int(input("ભાજક દાખલ કરો: "))
        
        result = dividend / divisor
        print(f"પરિણાम: {dividend} ÷ {divisor} = {result}")
        
    except ValueError:
        print("એરર: કૃપા કરીને ફક્ત યોગ્ય ઇન્ટિજર્સ દાખલ કરો")
        
    except ZeroDivisionError:
        print("એરર: શૂન્યથી ભાગાકાર કરી શકાતો નથી")
        
    except Exception as e:
        print(f"અનપેક્ષિત એરર આવ્યું: {e}")
    
    print("એક્સેપ્શન હેન્ડલિંગ પછી પ્રોગ્રામ ચાલુ રહે છે")

# ઉદાહરણ ઉપયોગ
safe_division()
  • try બ્લોક: સંભવિત જોખમી કોડ હોય છે
  • except બ્લોક: ચોક્કસ એક્સેપ્શન ટાઈપ્સ હેન્ડલ કરે
  • મલ્ટિપલ હેન્ડલર્સ: વિવિધ એક્સેપ્શન્સ અલગ અલગ હેન્ડલ

મેમરી ટ્રીક: “જોખમી કોડ ટ્રાય કરો, એક્સેપ્ટ એરર્સ હેન્ડલ કરે”

પ્રશ્ન 3(ક OR) [7 માર્ક્સ]
#

ડિવાઇડ બાય ઝીરો એક્સેપ્શન ફાઈનલી ક્લોઝ સાથે કેચ કરવાનો પ્રોગ્રામ લખો.

જવાબ:

# ફાઈનલી ક્લોઝ સાથે ડિવાઇડ બાય ઝીરો હેન્ડલ કરવાનો પ્રોગ્રામ
def advanced_calculator():
    """વ્યાપક એક્સેપ્શન હેન્ડલિંગ સાથે કેલ્ક્યુલેટર"""
    
    try:
        print("=== એડવાન્સ કેલ્ક્યુલેટર ===")
        print("ભાગાકાર માટે બે નંબર દાખલ કરો")
        
        # ઇનપુટ સેક્શન
        numerator = float(input("અંશ દાખલ કરો: "))
        denominator = float(input("છેદ દાખલ કરો: "))
        
        print(f"\n{numerator} ને {denominator} થી ભાગવાનો પ્રયાસ કરી રહ્યા છીએ...")
        
        # ક્રિટિકલ ઓપરેશન જે નિષ્ફળ થઈ શકે
        if denominator == 0:
            raise ZeroDivisionError("શૂન્યથી ભાગાકારની મંજૂરી નથી")
        
        result = numerator / denominator
        
        # સફળતાનો સંદેશ
        print(f"✓ ભાગાકાર સફળ!")
        print(f"✓ પરિણામ: {numerator} ÷ {denominator} = {result:.4f}")
        
        return result
        
    except ZeroDivisionError as zde:
        print(f"✗ ઝીરો ડિવિઝન એરર: {zde}")
        print("✗ કૃપા કરીને શૂન્ય સિવાયનો છેદ વાપરો")
        return None
        
    except ValueError as ve:
        print(f"✗ વેલ્યુ એરર: અમાન્ય ઇનપુટ આપ્યું")
        print("✗ કૃપા કરીને ફક્ત નંબરિક વેલ્યુઝ દાખલ કરો")
        return None
        
    except Exception as e:
        print(f"✗ અનપેક્ષિત એરર: {e}")
        return None
        
    finally:
        print("\n" + "="*40)
        print("ક્લીનઅપ ઓપરેશન્સ:")
        print("- કેલ્ક્યુલેટર સેશન બંધ કરી રહ્યા છીએ")
        print("- ઓપરેશન લોગ સેવ કરી રહ્યા છીએ")
        print("- મેમરી રિસોર્સિસ છોડી રહ્યા છીએ")
        print("- કેલ્ક્યુલેટર શટડાઉન પૂર્ણ")
        print("="*40)

# વિવિધ સ્થિતિઓ સાથે કેલ્ક્યુલેટર ટેસ્ટ કરવાનું ફંક્શન
def test_calculator():
    """વિવિધ પરિસ્થિતિઓ સાથે કેલ્ક્યુલેટર ટેસ્ટ કરો"""
    
    test_cases = [
        (10, 2),    # સામાન્ય ભાગાકાર
        (15, 0),    # ઝીરો ડિવિઝન
        (7, 3),     # દશાંશ સાથે સામાન્ય ભાગાકાર
    ]
    
    for i, (num, den) in enumerate(test_cases, 1):
        print(f"\n--- ટેસ્ટ કેસ {i} ---")
        print(f"ટેસ્ટિંગ: {num} ÷ {den}")
        
        # વાસ્તવિક પરિસ્થિતિમાં આ ઇન્ટરેક્ટિવ હશે
        # આ ફક્ત ડેમોન્સ્ટ્રેશન માટે છે
        print(f"{num} ને {den} થી ભાગવાનું સિમ્યુલેશન")
        
        try:
            if den == 0:
                raise ZeroDivisionError("શૂન્યથી ભાગાકાર કરી શકાતો નથી")
            result = num / den
            print(f"પરિણામ: {result}")
        except ZeroDivisionError as e:
            print(f"એરર પકડાયું: {e}")
        finally:
            print("ટેસ્ટ કેસ પૂર્ણ")

# કેલ્ક્યુલેટર ચલાવો
if __name__ == "__main__":
    result = advanced_calculator()
    
    if result is not None:
        print(f"\nઅંતિમ ગણેલું પરિણામ: {result}")
    else:
        print("\nએરર્સના કારણે ગણતરી નિષ્ફળ")

એક્સેપ્શન હેન્ડલિંગ ફીચર્સનું ટેબલ:

ફીચરઇમ્પ્લિમેન્ટેશન
ZeroDivisionErrorશૂન્યથી ભાગાકાર માટે ચોક્કસ હેન્ડલિંગ
ValueErrorઅમાન્ય ઇનપુટ ટાઈપ્સ હેન્ડલ કરે
જનરિક એક્સેપ્શનઅનપેક્ષિત એરર્સ પકડે
ફાઈનલી બ્લોકહંમેશા ક્લીનઅપ કોડ એક્ઝિક્યુટ

એક્સેપ્શન હેન્ડલિંગ ફ્લો:

flowchart TD
    A[ભાગાકાર શરૂ] --> B[try block]
    B --> C{એક્સેપ્શન?}
    C -->|ZeroDivisionError| D[ઝીરો ડિવિઝન હેન્ડલ]
    C -->|ValueError| E[અમાન્ય ઇનપુટ હેન્ડલ]
    C -->|અન્ય| F[જનરિક એરર હેન્ડલ]
    C -->|કંઈ નહીં| G[સફળતાનું પરિણામ]
    D --> H[finally block]
    E --> H
    F --> H
    G --> H
    H --> I[પ્રોગ્રામ સમાપ્ત]
  • ચોક્કસ એક્સેપ્શન હેન્ડલિંગ: ZeroDivisionError અલગથી પકડાય
  • ફાઈનલી ક્લોઝ: ક્લીનઅપ માટે હંમેશા એક્ઝિક્યુટ થાય
  • રિસોર્સ મેનેજમેન્ટ: એરર્સ છતાં યોગ્ય ક્લીનઅપ

મેમરી ટ્રીક: “ફાઈનલી હંમેશા રિસોર્સિસ ક્લીન કરે”

પ્રશ્ન 4(અ) [3 માર્ક્સ]
#

વ્યાખ્યાયિત કરો: ફાઇલ, બાઇનરી ફાઇલ, ટેક્સ્ટ ફાઇલ

જવાબ:

ફાઈલ વ્યાખ્યાઓનું ટેબલ:

શબ્દવ્યાખ્યાઉદાહરણ
ફાઈલડિસ્ક પર નામવાળું સ્ટોરેજ સ્થાનdocument.txt, image.jpg
બાઈનરી ફાઈલબાઈનરી ફોર્મેટમાં નોન-ટેક્સ્ટ ડેટા સમાવે.exe, .jpg, .mp3, .pdf
ટેક્સ્ટ ફાઈલમાનવ-વાંચી શકાય તેવા ટેક્સ્ટ કેરેક્ટર્સ સમાવે.txt, .py, .html, .csv

વિગતવાર વ્યાખ્યાઓ:

  • ફાઈલ: સ્ટોરેજ ડિવાઈસ પર યુનિક નામ સાથે સ્ટોર કરેલો ડેટાનો કલેક્શન
  • બાઈનરી ફાઈલ: બાઈનરી ફોર્મેટ (0s અને 1s) માં ડેટા સ્ટોર કરે, માનવ-વાંચી ન શકાય
  • ટેક્સ્ટ ફાઈલ: ASCII અથવા Unicode કેરેક્ટર્સ સમાવે, માનવ-વાંચી શકાય તેવું ફોર્મેટ

મેમરી ટ્રીક: “ફાઈલ્સ ડેટા સ્ટોર કરે, બાઈનરી=મશીન, ટેક્સ્ટ=માનવ”

પ્રશ્ન 4(બ) [4 માર્ક્સ]
#

write() અને writelines() ફંક્શન ઉદાહરણ સાથે સમજાવો.

જવાબ:

રાઈટ ફંક્શન્સનું ટેબલ:

ફંક્શનહેતુપેરામીટરઉપયોગ
write()સિંગલ સ્ટ્રિંગ લખેસ્ટ્રિંગfile.write("Hello")
writelines()સ્ટ્રિંગ્સની લિસ્ટ લખેલિસ્ટ/સિક્વન્સfile.writelines(["line1", "line2"])
# write() અને writelines() ફંક્શન્સનું ઉદાહરણ
def demonstrate_write_functions():
    
    # write() ફંક્શન વાપરીને
    with open("write_demo.txt", "w") as file:
        file.write("નમસ્તે વિશ્વ!\n")
        file.write("આ બીજી લાઈન છે\n")
        file.write("આ ત્રીજી લાઈન છે\n")
    
    # writelines() ફંક્શન વાપરીને
    lines = [
        "writelines વાપરીને પહેલી લાઈન\n",
        "writelines વાપરીને બીજી લાઈન\n", 
        "writelines વાપરીને ત્રીજી લાઈન\n"
    ]
    
    with open("writelines_demo.txt", "w") as file:
        file.writelines(lines)
    
    print("ફાઈલ્સ સફળતાપૂર્વક બનાવાઈ!")

# ડેમોન્સ્ટ્રેશન ચલાવો
demonstrate_write_functions()

મુખ્ય તફાવતો:

  • write(): એક સમયે એક સ્ટ્રિંગ લખે
  • writelines(): સિક્વન્સમાંથી મલ્ટિપલ સ્ટ્રિંગ્સ લખે
  • ન્યુલાઈન્સ: \n મેન્યુઅલી ઉમેરવું પડે
  • રિટર્ન વેલ્યુ: બંને લખાયેલા કેરેક્ટર્સની સંખ્યા રિટર્ન કરે

મેમરી ટ્રીક: “write() સિંગલ, writelines() મલ્ટિપલ”

પ્રશ્ન 4(ક) [7 માર્ક્સ]
#

tell() અને seek() ફંક્શન ઉદાહરણ સાથે સમજાવો.

જવાબ:

ફાઈલ પોઈન્ટર ફંક્શન્સ ફાઈલની અંદર રીડિંગ/રાઈટિંગ માટે પોઝિશન કંટ્રોલ કરે છે.

પોઝિશન ફંક્શન્સનું ટેબલ:

ફંક્શનહેતુરિટર્ન/પેરામીટરઉપયોગ
tell()વર્તમાન પોઝિશન મેળવોવર્તમાન બાઈટ પોઝિશન રિટર્નpos = file.tell()
seek(offset, whence)ચોક્કસ પોઝિશન પર જાઓoffset: બાઈટ્સ, whence: રેફરન્સfile.seek(10, 0)

Seek Whence વેલ્યુઝ:

વેલ્યુરેફરન્સ પોઈન્ટવર્ણન
0ફાઈલની શરૂઆતએબ્સોલ્યુટ પોઝિશનિંગ
1વર્તમાન પોઝિશનવર્તમાનના સંબંધમાં
2ફાઈલનો અંતઅંતના સંબંધમાં
# tell() અને seek() ફંક્શન્સનું સંપૂર્ણ ઉદાહરણ
def demonstrate_file_positioning():
    
    # સેમ્પલ ફાઈલ બનાવો
    sample_text = "નમસ્તે વિશ્વ! આ tell() અને seek() ફંક્શન્સ દર્શાવવા માટે સેમ્પલ ફાઈલ છે."
    
    with open("position_demo.txt", "w", encoding='utf-8') as file:
        file.write(sample_text)
    
    # tell() અને seek() દર્શાવો
    with open("position_demo.txt", "r", encoding='utf-8') as file:
        
        # શરૂઆતની પોઝિશન
        print(f"1. શરૂઆતની પોઝિશન: {file.tell()}")
        
        # પહેલા 5 કેરેક્ટર્સ વાંચો
        data1 = file.read(5)
        print(f"2. '{data1}' વાંચ્યું, વર્તમાન પોઝિશન: {file.tell()}")
        
        # પોઝિશન 15 પર જાઓ
        file.seek(15)
        print(f"3. seek(15) પછી, પોઝિશન: {file.tell()}")
        
        # આગળના 10 કેરેક્ટર્સ વાંચો
        data2 = file.read(10)
        print(f"4. '{data2}' વાંચ્યું, વર્તમાન પોઝિશન: {file.tell()}")
        
        # seek(0, 0) વાપરીને શરૂઆતમાં જાઓ
        file.seek(0, 0)
        print(f"5. seek(0,0) પછી, પોઝિશન: {file.tell()}")
        
        # seek(0, 2) વાપરીને અંતમાં જાઓ
        file.seek(0, 2)
        print(f"6. seek(0,2) પછી, પોઝિશન: {file.tell()}")
        
        # વર્તમાન પોઝિશનથી પાછળ જાઓ
        file.seek(-10, 1)
        print(f"7. seek(-10,1) પછી, પોઝિશન: {file.tell()}")
        
        # બાકીનું કન્ટેન્ટ વાંચો
        remaining = file.read()
        print(f"8. બાકીનું કન્ટેન્ટ: '{remaining}'")

# બાઈનરી ફાઈલ સાથે ઉદાહરણ
def binary_file_positioning():
    
    # બાઈનરી ફાઈલ બનાવો
    data = b"Binary file positioning example"
    
    with open("binary_demo.bin", "wb") as file:
        file.write(data)
    
    # પોઝિશનિંગ સાથે વાંચો
    with open("binary_demo.bin", "rb") as file:
        print(f"\nબાઈનરી ફાઈલ પોઝિશન: {file.tell()}")
        
        # પહેલા 6 બાઈટ્સ વાંચો
        chunk1 = file.read(6)
        print(f"વાંચ્યું: {chunk1}, પોઝિશન: {file.tell()}")
        
        # પોઝિશન 20 પર જમ્પ કરો
        file.seek(20)
        chunk2 = file.read(7)
        print(f"વાંચ્યું: {chunk2}, પોઝિશન: {file.tell()}")

# ડેમોન્સ્ટ્રેશન્સ ચલાવો
demonstrate_file_positioning()
binary_file_positioning()

પોઝિશન કંટ્રોલ ડાયાગ્રામ:

flowchart LR
    A[ફાઈલ શરૂઆત] --> B["tell(): 0"]
    B --> C["read(5)"]
    C --> D["tell(): 5"]
    D --> E["seek(15)"]
    E --> F["tell(): 15"]
    F --> G["seek(0,2)"]
    G --> H["tell(): અંત"]
  • tell(): ફાઈલમાં વર્તમાન બાઈટ પોઝિશન રિટર્ન કરે
  • seek(): ફાઈલ પોઈન્ટરને સ્પેસિફાઈડ પોઝિશન પર મૂવ કરે
  • પોઝિશનિંગ: રેન્ડમ ફાઈલ એક્સેસ માટે જરૂરી
  • બાઈનરી મોડ: બાઈટ પોઝિશન્સ સાથે કામ કરે

મેમરી ટ્રીક: “tell() પોઝિશન, seek() મૂવમેન્ટ”

પ્રશ્ન 4(અ OR) [3 માર્ક્સ]
#

એબ્સોલ્યુટ અને રિલેટિવ પાથ શું છે?

જવાબ:

પાથ ટાઈપ્સનું ટેબલ:

પાથ ટાઈપવર્ણનઉદાહરણ
એબ્સોલ્યુટ પાથરૂટ ડિરેક્ટરીથી સંપૂર્ણ પાથ/home/user/documents/file.txt
રિલેટિવ પાથવર્તમાન ડિરેક્ટરીના સંબંધમાં પાથ../documents/file.txt

પાથ સિમ્બોલ્સ:

સિમ્બોલઅર્થઉદાહરણ
/રૂટ ડિરેક્ટરી (Linux/Mac)/home/user/
C:\ડ્રાઈવ લેટર (Windows)C:\\Users\\Documents\\
.વર્તમાન ડિરેક્ટરી./file.txt
..પેરન્ટ ડિરેક્ટરી../folder/file.txt
  • એબ્સોલ્યુટ: સિસ્ટમ રૂટથી સંપૂર્ણ પાથ
  • રિલેટિવ: વર્તમાન વર્કિંગ ડિરેક્ટરીથી પાથ

મેમરી ટ્રીક: “એબ્સોલ્યુટ રૂટથી, રિલેટિવ વર્તમાનથી”

પ્રશ્ન 4(બ OR) [4 માર્ક્સ]
#

બાયનરી અને ટેક્સ્ટ ફાઇલ ખોલવાના વિવિધ મોડ સમજાવો.

જવાબ:

ફાઈલ ઓપનિંગ મોડ્સનું ટેબલ:

મોડટાઈપહેતુફાઈલ પોઈન્ટર
‘r’ટેક્સ્ટફક્ત વાંચવાશરૂઆત
‘w’ટેક્સ્ટલખવા (ઓવરરાઈટ)શરૂઆત
‘a’ટેક્સ્ટઉમેરવાઅંત
‘rb’બાઈનરીબાઈનરી વાંચવાશરૂઆત
‘wb’બાઈનરીબાઈનરી લખવાશરૂઆત
‘ab’બાઈનરીબાઈનરી ઉમેરવાઅંત
‘r+’ટેક્સ્ટવાંચવા અને લખવાશરૂઆત
‘w+’ટેક્સ્ટલખવા અને વાંચવાશરૂઆત
# વિવિધ ફાઈલ મોડ્સના ઉદાહરણો
def demonstrate_file_modes():
    
    # ટેક્સ્ટ ફાઈલ મોડ્સ
    with open("text_file.txt", "w") as f:  # રાઈટ મોડ
        f.write("નમસ્તે વિશ્વ")
    
    with open("text_file.txt", "r") as f:  # રીડ મોડ
        content = f.read()
        print(f"ટેક્સ્ટ કન્ટેન્ટ: {content}")
    
    # બાઈનરી ફાઈલ મોડ્સ
    data = b"Binary data example"
    with open("binary_file.bin", "wb") as f:  # બાઈનરી રાઈટ
        f.write(data)
    
    with open("binary_file.bin", "rb") as f:  # બાઈનરી રીડ
        binary_content = f.read()
        print(f"બાઈનરી કન્ટેન્ટ: {binary_content}")

demonstrate_file_modes()
  • ટેક્સ્ટ મોડ્સ: એન્કોડિંગ સાથે સ્ટ્રિંગ ડેટા હેન્ડલ કરે
  • બાઈનરી મોડ્સ: એન્કોડિંગ વગર રો બાઈટ્સ હેન્ડલ કરે
  • પ્લસ મોડ્સ: રીડિંગ અને રાઈટિંગ બંનેની મંજૂરી

મેમરી ટ્રીક: “ટેક્સ્ટ સ્ટ્રિંગ્સ માટે, બાઈનરી બાઈટ્સ માટે”

પ્રશ્ન 4(ક OR) [7 માર્ક્સ]
#

વિદ્યાર્થીના વિષય રેકોર્ડ જેવાં કે શાખાનું નામ, સેમેસ્ટર, વિષયનો કોડ અને વિષયનું નામ બાઇનરી ફાઇલમાં લખવા માટેનો પ્રોગ્રામ લખો.

જવાબ:

import pickle
import os

class StudentSubjectRecord:
    """વિદ્યાર્થી વિષય રેકોર્ડ હેન્ડલ કરવા માટેનો ક્લાસ"""
    
    def __init__(self, branch_name, semester, subject_code, subject_name):
        self.branch_name = branch_name
        self.semester = semester
        self.subject_code = subject_code
        self.subject_name = subject_name
    
    def __str__(self):
        return f"શાખા: {self.branch_name}, સેમેસ્ટર: {self.semester}, કોડ: {self.subject_code}, વિષય: {self.subject_name}"

def write_student_records():
    """વિદ્યાર્થી રેકોર્ડ્સ બાઈનરી ફાઈલમાં લખો"""
    
    # સેમ્પલ વિદ્યાર્થી રેકોર્ડ્સ
    records = [
        StudentSubjectRecord("ઈન્ફોર્મેશન ટેક્નોલોજી", 2, "4321602", "એડવાન્સ પાયથન પ્રોગ્રામિંગ"),
        StudentSubjectRecord("ઈન્ફોર્મેશન ટેક્નોલોજી", 2, "4321601", "ડેટાબેસ મેનેજમેન્ટ સિસ્ટમ"),
        StudentSubjectRecord("કમ્પ્યુટર એન્જિનિયરિંગ", 3, "4330701", "ડેટા સ્ટ્રક્ચર"),
        StudentSubjectRecord("ઈન્ફોર્મેશન ટેક્નોલોજી", 2, "4321603", "વેબ ડેવલપમેન્ટ"),
        StudentSubjectRecord("કમ્પ્યુટર એન્જિનિયરિંગ", 3, "4330702", "કમ્પ્યુટર નેટવર્ક્સ")
    ]
    
    # pickle વાપરીને રેકોર્ડ્સને બાઈનરી ફાઈલમાં લખો
    try:
        with open("student_records.bin", "wb") as binary_file:
            pickle.dump(records, binary_file)
        
        print("✓ વિદ્યાર્થી રેકોર્ડ્સ બાઈનરી ફાઈલમાં સફળતાપૂર્વક લખાયા!")
        print(f"✓ કુલ લખાયેલા રેકોર્ડ્સ: {len(records)}")
        
    except Exception as e:
        print(f"✗ બાઈનરી ફાઈલમાં લખવામાં એરર: {e}")

def read_student_records():
    """બાઈનરી ફાઈલમાંથી વિદ્યાર્થી રેકોર્ડ્સ વાંચો"""
    
    try:
        if not os.path.exists("student_records.bin"):
            print("✗ બાઈનરી ફાઈલ મળી નહીં!")
            return
        
        with open("student_records.bin", "rb") as binary_file:
            records = pickle.load(binary_file)
        
        print("\n" + "="*60)
        print("બાઈનરી ફાઈલમાંથી વિદ્યાર્થી વિષય રેકોર્ડ્સ")
        print("="*60)
        
        for i, record in enumerate(records, 1):
            print(f"{i}. {record}")
        
        print("="*60)
        print(f"કુલ વાંચેલા રેકોર્ડ્સ: {len(records)}")
        
    except Exception as e:
        print(f"✗ બાઈનરી ફાઈલમાંથી વાંચવામાં એરર: {e}")

def add_new_record():
    """હાલની બાઈનરી ફાઈલમાં નવો વિદ્યાર્થી રેકોર્ડ ઉમેરો"""
    
    try:
        # હાલના રેકોર્ડ્સ વાંચો
        records = []
        if os.path.exists("student_records.bin"):
            with open("student_records.bin", "rb") as binary_file:
                records = pickle.load(binary_file)
        
        # નવા રેકોર્ડની વિગતો મેળવો
        print("\nનવા વિદ્યાર્થી રેકોર્ડની વિગતો દાખલ કરો:")
        branch = input("શાખાનું નામ: ")
        semester = int(input("સેમેસ્ટર: "))
        code = input("વિષયનો કોડ: ")
        subject = input("વિષયનું નામ: ")
        
        # નવો રેકોર્ડ બનાવો
        new_record = StudentSubjectRecord(branch, semester, code, subject)
        records.append(new_record)
        
        # ફાઈલમાં પાછું લખો
        with open("student_records.bin", "wb") as binary_file:
            pickle.dump(records, binary_file)
        
        print("✓ નવો રેકોર્ડ સફળતાપૂર્વક ઉમેર્યો!")
        
    except Exception as e:
        print(f"✗ નવો રેકોર્ડ ઉમેરવામાં એરર: {e}")

def search_records_by_branch(branch_name):
    """શાખાના નામ દ્વારા રેકોર્ડ્સ શોધો"""
    
    try:
        if not os.path.exists("student_records.bin"):
            print("✗ બાઈનરી ફાઈલ મળી નહીં!")
            return
        
        with open("student_records.bin", "rb") as binary_file:
            records = pickle.load(binary_file)
        
        # શાખા દ્વારા રેકોર્ડ્સ ફિલ્ટર કરો
        filtered_records = [record for record in records 
                          if record.branch_name.lower() == branch_name.lower()]
        
        if filtered_records:
            print(f"\n{branch_name} માટેના રેકોર્ડ્સ:")
            print("-" * 40)
            for record in filtered_records:
                print(f"  {record}")
        else:
            print(f"શાખા માટે કોઈ રેકોર્ડ મળ્યો નહીં: {branch_name}")
            
    except Exception as e:
        print(f"✗ રેકોર્ડ્સ શોધવામાં એરર: {e}")

# મુખ્ય પ્રોગ્રામ એક્ઝિક્યુશન
def main():
    """બાઈનરી ફાઈલ ઓપરેશન્સ દર્શાવવા માટેનું મુખ્ય ફંક્શન"""
    
    print("=== વિદ્યાર્થી વિષય રેકોર્ડ મેનેજમેન્ટ ===\n")
    
    # શરૂઆતના રેકોર્ડ્સ લખો
    print("1. બાઈનરી ફાઈલમાં વિદ્યાર્થી રેકોર્ડ્સ લખી રહ્યા છીએ...")
    write_student_records()
    
    # રેકોર્ડ્સ વાંચો અને દર્શાવો
    print("\n2. બાઈનરી ફાઈલમાંથી રેકોર્ડ્સ વાંચી રહ્યા છીએ...")
    read_student_records()
    
    # શાખા દ્વારા શોધો
    print("\n3. શાખા દ્વારા રેકોર્ડ્સ શોધી રહ્યા છીએ...")
    search_records_by_branch("ઈન્ફોર્મેશન ટેક્નોલોજી")
    
    # ફાઈલની માહિતી દર્શાવો
    if os.path.exists("student_records.bin"):
        file_size = os.path.getsize("student_records.bin")
        print(f"\nબાઈનરી ફાઈલ સાઈઝ: {file_size} બાઈટ્સ")

# પ્રોગ્રામ એક્ઝિક્યુટ કરો
if __name__ == "__main__":
    main()

બાઈનરી ફાઈલ ઓપરેશન્સનું ટેબલ:

ઓપરેશનમેથડહેતુ
લખવુંpickle.dump()ઓબ્જેક્ટ્સને બાઈનરીમાં સીરિયલાઈઝ
વાંચવુંpickle.load()બાઈનરીમાંથી ઓબ્જેક્ટ્સ ડીસીરિયલાઈઝ
ઉમેરવુંવાંચવું + ઉમેરવું + લખવુંનવા રેકોર્ડ્સ ઉમેરો
શોધવુંલોડ કરેલો ડેટા ફિલ્ટરચોક્કસ રેકોર્ડ્સ શોધો

બાઈનરી ફાઈલ સ્ટ્રક્ચર:

flowchart TD
    A[વિદ્યાર્થી રેકોર્ડ્સ] --> B["pickle.dump()"]
    B --> C[બાઈનરી ફાઈલ .bin]
    C --> D["pickle.load()"]
    D --> E[Python ઓબ્જેક્ટ્સ]
  • બાઈનરી સ્ટોરેજ: ઓબ્જેક્ટ સીરિયલાઈઝેશન માટે pickle વાપરે
  • કાર્યક્ષમ સ્ટોરેજ: કોમ્પેક્ટ બાઈનરી ફોર્મેટ
  • ઓબ્જેક્ટ પ્રિઝર્વેશન: ડેટા સ્ટ્રક્ચર ઈન્ટેગ્રિટી જાળવે
  • ક્રોસ-પ્લેટફોર્મ: વિવિધ ઓપરેટિંગ સિસ્ટમ્સ પર કામ કરે

મેમરી ટ્રીક: “Pickle Python ઓબ્જેક્ટ્સ પ્રિઝર્વ કરે”

પ્રશ્ન 5(અ) [3 માર્ક્સ]
#

વ્યાખ્યાયિત કરો: GUI, CLI

જવાબ:

ઈન્ટરફેસ વ્યાખ્યાઓનું ટેબલ:

શબ્દપૂરું નામવર્ણનઉદાહરણ
GUIGraphical User Interfaceવિન્ડોઝ, બટન્સ, આઈકોન્સ સાથે વિઝ્યુઅલ ઈન્ટરફેસWindows, Mac ડેસ્કટોપ
CLICommand Line Interfaceકમાન્ડ્સ વાપરીને ટેક્સ્ટ-આધારિત ઈન્ટરફેસટર્મિનલ, કમાન્ડ પ્રોમ્પ્ટ

મુખ્ય તફાવતો:

  • GUI: યુઝર-ફ્રેન્ડલી, માઉસ-ડ્રિવન, વિઝ્યુઅલ એલિમેન્ટ્સ
  • CLI: ટેક્સ્ટ-આધારિત, કીબોર્ડ-ડ્રિવન, કમાન્ડ સિન્ટેક્સ
  • ઈન્ટરેક્શન: GUI ક્લિક્સ વાપરે, CLI ટાઈપ કરેલા કમાન્ડ્સ વાપરે

મેમરી ટ્રીક: “GUI ગ્રાફિક્સ, CLI કમાન્ડ્સ”

પ્રશ્ન 5(બ) [4 માર્ક્સ]
#

ટર્ટલનો ઉપયોગ કરીને for અને while લૂપનો ઉપયોગ કરીને ચોરસ આકાર દોરવા માટે પાયથોન પ્રોગ્રામ લખો.

જવાબ:

import turtle

def draw_square_with_for_loop():
    """for લૂપ વાપરીને ચોરસ દોરો"""
    
    # ટર્ટલ સેટઅપ
    screen = turtle.Screen()
    screen.bgcolor("white")
    square_turtle = turtle.Turtle()
    square_turtle.color("blue")
    square_turtle.pensize(3)
    
    # for લૂપ વાપરીને ચોરસ દોરો
    print("for લૂપ વાપરીને ચોરસ દોરી રહ્યા છીએ...")
    side_length = 100
    
    for i in range(4):
        square_turtle.forward(side_length)
        square_turtle.right(90)
    
    square_turtle.penup()
    square_turtle.goto(150, 0)
    square_turtle.pendown()
    
    return square_turtle

def draw_square_with_while_loop(turtle_obj):
    """while લૂપ વાપરીને ચોરસ દોરો"""
    
    # બીજા ચોરસ માટે રંગ બદલો
    turtle_obj.color("red")
    
    # while લૂપ વાપરીને ચોરસ દોરો
    print("while લૂપ વાપરીને ચોરસ દોરી રહ્યા છીએ...")
    side_length = 100
    sides_drawn = 0
    
    while sides_drawn < 4:
        turtle_obj.forward(side_length)
        turtle_obj.right(90)
        sides_drawn += 1
    
    # ટેક્સ્ટ માટે ટર્ટલને સેન્ટરમાં મૂવ કરો
    turtle_obj.penup()
    turtle_obj.goto(-50, -150)
    turtle_obj.write("નીલો: for લૂપ, લાલ: while લૂપ", 
                    font=("Arial", 12, "normal"))

# મુખ્ય એક્ઝિક્યુશન
def main():
    # ચોરસ દોરો
    turtle_obj = draw_square_with_for_loop()
    draw_square_with_while_loop(turtle_obj)
    
    # વિન્ડો ખુલ્લી રાખો
    turtle.Screen().exitonclick()

# પ્રોગ્રામ ચલાવો
main()

લૂપ કમ્પેરિઝનનું ટેબલ:

લૂપ ટાઈપસ્ટ્રક્ચરઉપયોગકંટ્રોલ
for લૂપfor i in range(4):જાણીતા ઈટરેશન્સકાઉન્ટર-આધારિત
while લૂપwhile condition:કન્ડિશનલ ઈટરેશન્સકન્ડિશન-આધારિત
  • for લૂપ: જાણીતી સંખ્યાના ઈટરેશન્સ માટે શ્રેષ્ઠ
  • while લૂપ: કન્ડિશન-આધારિત રિપેટિશન માટે શ્રેષ્ઠ
  • બંને અચીવ કરે: એક જ ચોરસ દોરવાનું પરિણામ

મેમરી ટ્રીક: “For કાઉન્ટ, While કન્ડિશન”

પ્રશ્ન 5(ક) [7 માર્ક્સ]
#

ટર્ટલનો ઉપયોગ કરીને ચેસબોર્ડ દોરવા માટે પાયથોન પ્રોગ્રામ લખો.

જવાબ:

import turtle

def setup_chessboard():
    """ચેસબોર્ડ માટે ટર્ટલ સ્ક્રીન અને પ્રોપર્ટીઝ સેટઅપ કરો"""
    
    screen = turtle.Screen()
    screen.bgcolor("white")
    screen.title("Python ટર્ટલ વાપરીને ચેસબોર્ડ")
    screen.setup(width=600, height=600)
    
    # ડ્રોઈંગ માટે ટર્ટલ બનાવો
    chess_turtle = turtle.Turtle()
    chess_turtle.speed(0)  # સૌથી ઝડપી સ્પીડ
    chess_turtle.penup()
    
    return screen, chess_turtle

def draw_square(turtle_obj, size, fill_color):
    """આપેલા રંગ સાથે એક ચોરસ દોરો"""
    
    turtle_obj.pendown()
    turtle_obj.fillcolor(fill_color)
    turtle_obj.begin_fill()
    
    # ચોરસ દોરો
    for _ in range(4):
        turtle_obj.forward(size)
        turtle_obj.right(90)
    
    turtle_obj.end_fill()
    turtle_obj.penup()

def draw_chessboard():
    """સંપૂર્ણ 8x8 ચેસબોર્ડ દોરો"""
    
    screen, chess_turtle = setup_chessboard()
    
    # ચેસબોર્ડ પેરામીટર્સ
    square_size = 40
    board_size = 8
    start_x = -160
    start_y = 160
    
    print("ચેસબોર્ડ દોરી રહ્યા છીએ...")
    
    # બોર્ડ દોરો
    for row in range(board_size):
        for col in range(board_size):
            
            # પોઝિશન ગણો
            x = start_x + (col * square_size)
            y = start_y - (row * square_size)
            
            # ટર્ટલને પોઝિશન પર મૂવ કરો
            chess_turtle.goto(x, y)
            
            # ચોરસનો રંગ નક્કી કરો (અલ્ટર્નેટિંગ પેટર્ન)
            if (row + col) % 2 == 0:
                color = "white"
            else:
                color = "black"
            
            # ચોરસ દોરો
            draw_square(chess_turtle, square_size, color)
    
    # ચેસબોર્ડની આસપાસ બોર્ડર ઉમેરો
    draw_border(chess_turtle, start_x, start_y, square_size, board_size)
    
    # લેબલ્સ ઉમેરો
    add_chessboard_labels(chess_turtle, start_x, start_y, square_size, board_size)
    
    return screen

def draw_border(turtle_obj, start_x, start_y, square_size, board_size):
    """ચેસબોર્ડની આસપાસ બોર્ડર દોરો"""
    
    turtle_obj.goto(start_x - 5, start_y + 5)
    turtle_obj.pencolor("brown")
    turtle_obj.pensize(3)
    turtle_obj.pendown()
    
    # બોર્ડર રેક્ટેંગલ દોરો
    border_width = board_size * square_size + 10
    border_height = board_size * square_size + 10
    
    for _ in range(2):
        turtle_obj.forward(border_width)
        turtle_obj.right(90)
        turtle_obj.forward(border_height)
        turtle_obj.right(90)
    
    turtle_obj.penup()
    turtle_obj.pensize(1)
    turtle_obj.pencolor("black")

def add_chessboard_labels(turtle_obj, start_x, start_y, square_size, board_size):
    """ચેસબોર્ડમાં રો અને કોલમ લેબલ્સ ઉમેરો"""
    
    turtle_obj.color("blue")
    
    # કોલમ લેબલ્સ (A-H)
    columns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
    for i, letter in enumerate(columns):
        x = start_x + (i * square_size) + (square_size // 2)
        y = start_y - (board_size * square_size) - 20
        turtle_obj.goto(x, y)
        turtle_obj.write(letter, align="center", font=("Arial", 12, "bold"))
    
    # રો લેબલ્સ (1-8)
    for i in range(board_size):
        x = start_x - 20
        y = start_y - (i * square_size) - (square_size // 2)
        turtle_obj.goto(x, y)
        turtle_obj.write(str(8-i), align="center", font=("Arial", 12, "bold"))
    
    # શીર્ષક
    turtle_obj.goto(0, start_y + 30)
    turtle_obj.write("Python ટર્ટલ ચેસબોર્ડ", align="center", 
                    font=("Arial", 16, "bold"))

def draw_enhanced_chessboard_with_pieces():
    """ચેસ પીસ ઈન્ડિકેટર્સ સાથે એન્હાન્સ વર્ઝન"""
    
    screen = draw_chessboard()
    
    # પીસીસ માટે નવો ટર્ટલ બનાવો
    piece_turtle = turtle.Turtle()
    piece_turtle.speed(0)
    piece_turtle.penup()
    
    # કેટલાક પીસ સિમ્બોલ્સ ઉમેરો (સિમ્પ્લિફાઈડ)
    pieces = [
        (-120, 120, "♜"), (-80, 120, "♞"), (-40, 120, "♝"), (0, 120, "♛"),
        (-120, -120, "♖"), (-80, -120, "♘"), (-40, -120, "♗"), (0, -120, "♕")
    ]
    
    piece_turtle.color("red")
    for x, y, symbol in pieces:
        piece_turtle.goto(x, y)
        piece_turtle.write(symbol, align="center", font=("Arial", 20, "normal"))
    
    piece_turtle.hideturtle()
    
    # આંકડાકીય માહિતી દર્શાવો
    total_squares = 64
    black_squares = 32
    white_squares = 32
    
    piece_turtle.goto(0, -200)
    piece_turtle.color("green")
    piece_turtle.write(f"ચેસબોર્ડ: {total_squares} ચોરસ ({black_squares} કાળા, {white_squares} સફેદ)", 
                      align="center", font=("Arial", 12, "normal"))
    
    return screen

# મુખ્ય એક્ઝિક્યુશન
def main():
    """ચેસબોર્ડ બનાવવા માટેનું મુખ્ય ફંક્શન"""
    
    print("Python ટર્ટલ વાપરીને ચેસબોર્ડ બનાવી રહ્યા છીએ...")
    screen = draw_enhanced_chessboard_with_pieces()
    
    print("ચેસબોર્ડ સફળતાપૂર્વક બનાવ્યું!")
    print("વિન્ડો બંધ કરવા માટે સ્ક્રીન પર ક્લિક કરો.")
    
    # ક્લિક કરવામાં આવે ત્યાં સુધી વિન્ડો ખુલ્લી રાખો
    screen.exitonclick()

# પ્રોગ્રામ ચલાવો
if __name__ == "__main__":
    main()

ચેસબોર્ડ કોમ્પોનન્ટ્સનું ટેબલ:

કોમ્પોનન્ટઇમ્પ્લિમેન્ટેશનહેતુ
ચોરસ8x8 ગ્રિડ ઓલ્ટર્નેટિંગ કલર્સમુખ્ય બોર્ડ પેટર્ન
રંગોકાળો અને સફેદ ઓલ્ટર્નેટિંગપરંપરાગત ચેસ પેટર્ન
બોર્ડરબ્રાઉન રેક્ટેંગલ આઉટલાઈનબોર્ડને ફ્રેમ કરો
લેબલ્સA-H કોલમ્સ, 1-8 રોઝચેસ નોટેશન
પીસીસયુનિકોડ ચેસ સિમ્બોલ્સસેમ્પલ પીસ પ્લેસમેન્ટ

ચેસબોર્ડ પેટર્ન લોજિક:

flowchart TD
    A[રો 0 શરૂ] --> B{દરેક રો માટે}
    B --> C{દરેક કોલમ માટે}
    C --> D{row + col સમ?}
    D -->|હા| E[સફેદ ચોરસ]
    D -->|ના| F[કાળો ચોરસ]
    E --> G[આગળનો કોલમ]
    F --> G
    G --> C
    C -->|રો પૂર્ણ| H[આગળનો રો]
    H --> B
    B -->|બધા રો પૂર્ણ| I[સંપૂર્ણ બોર્ડ]
  • ઓલ્ટર્નેટિંગ પેટર્ન: (row + col) % 2 રંગ નક્કી કરે
  • ગ્રિડ સિસ્ટમ: ચોક્કસ પોઝિશનિંગ સાથે 8x8 ચોરસ
  • વિઝ્યુઅલ એન્હાન્સમેન્ટ્સ: બોર્ડર, લેબલ્સ અને સેમ્પલ પીસીસ
  • સ્કેલેબલ ડિઝાઈન: ચોરસ સાઈઝ મોડિફાઈ કરવું સરળ

મેમરી ટ્રીક: “ગ્રિડ પેટર્નમાં ઓલ્ટર્નેટ કલર્સ”

પ્રશ્ન 5(અ OR) [3 માર્ક્સ]
#

ટર્ટલમાં કેટલા પ્રકારના આકાર હોય છે? કોઈપણ એક આકાર યોગ્ય ઉદાહરણ સાથે સમજાવો.

જવાબ:

ટર્ટલ શેપ્સનું ટેબલ:

શેપ ટાઈપઉદાહરણોમેથડ
બેસિક શેપ્સવતુળ, ચોરસ, ત્રિકોણબિલ્ટ-ઇન ફંક્શન્સ
લાઈન પેટર્ન્સસીધી લાઈનો, કર્વ્સforward(), backward()
પોલિગોન્સપંચકોણ, ષટકોણ, અષ્ટકોણએંગલ્સ સાથે લૂપ
કોમ્પ્લેક્સ શેપ્સતારા, સ્પાઈરલ્સ, ફ્રેક્ટલ્સગાણિતિક પેટર્ન્સ
કસ્ટમ શેપ્સયુઝર-ડિફાઈન્ડ પેટર્ન્સમૂવમેન્ટ્સનું કોમ્બિનેશન

વતુળ શેપ ઉદાહરણ:

import turtle

def draw_circle_example():
    screen = turtle.Screen()
    circle_turtle = turtle.Turtle()
    
    # 50 ત્રિજ્યા સાથે વતુળ દોરો
    circle_turtle.circle(50)
    
    screen.exitonclick()

draw_circle_example()
  • બિલ્ટ-ઇન શેપ્સ: વતુળ, ચોરસ, ત્રિકોણ સહેલાઈથી ઉપલબ્ધ
  • કસ્ટમ શેપ્સ: મૂવમેન્ટ કોમ્બિનેશન વાપરીને બનાવાય
  • ગાણિતિક શેપ્સ: ચોક્કસ ડ્રોઈંગ માટે ભૂમિતિ વાપરો

મેમરી ટ્રીક: “ટર્ટલ ઘણા શેપ ટાઈપ્સ દોરે”

પ્રશ્ન 5(બ OR) [4 માર્ક્સ]
#

ટર્ટલ મોડ્યુલની ચાર મૂળભૂત પદ્ધતિઓ વિશે સમજાવો.

જવાબ:

બેસિક ટર્ટલ મેથડ્સનું ટેબલ:

મેથડહેતુપેરામીટર્સઉદાહરણ
forward(distance)ટર્ટલને આગળ ખસેડોપિક્સલ્સમાં અંતરturtle.forward(100)
backward(distance)ટર્ટલને પાછળ ખસેડોપિક્સલ્સમાં અંતરturtle.backward(50)
right(angle)ટર્ટલને જમણે ફેરવોડિગ્રીમાં એંગલturtle.right(90)
left(angle)ટર્ટલને ડાબે ફેરવોડિગ્રીમાં એંગલturtle.left(45)
import turtle

def demonstrate_basic_methods():
    # ટર્ટલ બનાવો
    demo_turtle = turtle.Turtle()
    
    # 1. આગળની મૂવમેન્ટ
    demo_turtle.forward(100)  # 100 પિક્સલ્સ આગળ મૂવ કરો
    
    # 2. જમણે ટર્ન
    demo_turtle.right(90)     # 90 ડિગ્રી જમણે ટર્ન કરો
    
    # 3. પાછળની મૂવમેન્ટ  
    demo_turtle.backward(50)  # 50 પિક્સલ્સ પાછળ મૂવ કરો
    
    # 4. ડાબે ટર્ન
    demo_turtle.left(135)     # 135 ડિગ્રી ડાબે ટર્ન કરો
    
    turtle.done()

demonstrate_basic_methods()
  • મૂવમેન્ટ મેથડ્સ: અંતર માટે forward() અને backward()
  • રોટેશન મેથડ્સ: દિશા બદલવા માટે right() અને left()
  • કોઓર્ડિનેટ સિસ્ટમ: વર્તમાન ટર્ટલ પોઝિશન અને હેડિંગ આધારિત
  • એંગલ મેઝરમેન્ટ: ડિગ્રીઝ (0-360)

મેમરી ટ્રીક: “આગળ, પાછળ, જમણે, ડાબે બેસિક્સ”

પ્રશ્ન 5(ક OR) [7 માર્ક્સ]
#

ટર્ટલનો ઉપયોગ કરીને ચોરસ, લાંબચોરસ અને વતુળ દોરવા માટે પાયથોન પ્રોગ્રામ લખો.

જવાબ:

import turtle
import math

def setup_drawing_environment():
    """ટર્ટલ સ્ક્રીન અને ડ્રોઈંગ એન્વાયરનમેન્ટ સેટઅપ કરો"""
    
    screen = turtle.Screen()
    screen.bgcolor("lightblue")
    screen.title("આકાર દોરવા: ચોરસ, લાંબચોરસ, વતુળ")
    screen.setup(width=800, height=600)
    
    # મુખ્ય ડ્રોઈંગ ટર્ટલ બનાવો
    shape_turtle = turtle.Turtle()
    shape_turtle.speed(3)
    shape_turtle.pensize(2)
    
    return screen, shape_turtle

def draw_square(turtle_obj, size, color, position):
    """આપેલા સાઈઝ અને કલર સાથે ચોરસ દોરો"""
    
    x, y = position
    turtle_obj.penup()
    turtle_obj.goto(x, y)
    turtle_obj.pendown()
    
    turtle_obj.color(color)
    turtle_obj.fillcolor(color)
    turtle_obj.begin_fill()
    
    # 4 સમાન બાજુઓ વાપરીને ચોરસ દોરો
    for _ in range(4):
        turtle_obj.forward(size)
        turtle_obj.right(90)
    
    turtle_obj.end_fill()
    
    # લેબલ ઉમેરો
    turtle_obj.penup()
    turtle_obj.goto(x + size//2, y - 30)
    turtle_obj.color("black")
    turtle_obj.write(f"ચોરસ ({size}x{size})", align="center", 
                    font=("Arial", 10, "bold"))

def draw_rectangle(turtle_obj, width, height, color, position):
    """આપેલા dimensions અને કલર સાથે લાંબચોરસ દોરો"""
    
    x, y = position
    turtle_obj.penup()
    turtle_obj.goto(x, y)
    turtle_obj.pendown()
    
    turtle_obj.color(color)
    turtle_obj.fillcolor(color)
    turtle_obj.begin_fill()
    
    # લંબાઈ અને પહોળાઈ બદલીને લાંબચોરસ દોરો
    for _ in range(2):
        turtle_obj.forward(width)
        turtle_obj.right(90)
        turtle_obj.forward(height)
        turtle_obj.right(90)
    
    turtle_obj.end_fill()
    
    # લેબલ ઉમેરો
    turtle_obj.penup()
    turtle_obj.goto(x + width//2, y - height - 20)
    turtle_obj.color("black")
    turtle_obj.write(f"લાંબચોરસ ({width}x{height})", align="center", 
                    font=("Arial", 10, "bold"))

def draw_circle(turtle_obj, radius, color, position):
    """આપેલા ત્રિજ્યા અને કલર સાથે વતુળ દોરો"""
    
    x, y = position
    turtle_obj.penup()
    turtle_obj.goto(x, y - radius)  # વતુળના તળિયે પોઝિશન
    turtle_obj.pendown()
    
    turtle_obj.color(color)
    turtle_obj.fillcolor(color)
    turtle_obj.begin_fill()
    
    # વતુળ દોરો
    turtle_obj.circle(radius)
    
    turtle_obj.end_fill()
    
    # ક્ષેત્રફળ ગણતરી સાથે લેબલ ઉમેરો
    area = math.pi * radius * radius
    turtle_obj.penup()
    turtle_obj.goto(x, y - radius - 30)
    turtle_obj.color("black")
    turtle_obj.write(f"વતુળ (r={radius}, ક્ષેત્રફળ={area:.1f})", align="center", 
                    font=("Arial", 10, "bold"))

def draw_all_shapes():
    """ત્રણેય આકાર દોરવા માટેનું મુખ્ય ફંક્શન"""
    
    screen, shape_turtle = setup_drawing_environment()
    
    print("ભૌમિતિક આકાર દોરી રહ્યા છીએ...")
    
    # ચોરસ દોરો
    print("1. ચોરસ દોરી રહ્યા છીએ...")
    draw_square(shape_turtle, 80, "red", (-300, 100))
    
    # લાંબચોરસ દોરો  
    print("2. લાંબચોરસ દોરી રહ્યા છીએ...")
    draw_rectangle(shape_turtle, 120, 80, "green", (-50, 100))
    
    # વતુળ દોરો
    print("3. વતુળ દોરી રહ્યા છીએ...")
    draw_circle(shape_turtle, 60, "blue", (200, 100))
    
    # શીર્ષક અને માહિતી ઉમેરો
    add_shape_information(shape_turtle)
    
    print("બધા આકાર સફળતાપૂર્વક દોર્યા!")
    return screen

def add_shape_information(turtle_obj):
    """શીર્ષક અને આકારની માહિતી ઉમેરો"""
    
    # શીર્ષક
    turtle_obj.penup()
    turtle_obj.goto(0, 200)
    turtle_obj.color("purple")
    turtle_obj.write("Python ટર્ટલ આકારો", align="center", 
                    font=("Arial", 18, "bold"))
    
    # આકારની પ્રોપર્ટીઝ ટેબલ
    turtle_obj.goto(-350, -50)
    turtle_obj.color("black")
    turtle_obj.write("આકારની પ્રોપર્ટીઝ:", font=("Arial", 12, "bold"))
    
    properties = [
        "• ચોરસ: 4 સમાન બાજુઓ, 4 કાટકોણ",
        "• લાંબચોરસ: 4 બાજુઓ, સામેની બાજુઓ સમાન", 
        "• વતુળ: કેન્દ્રથી બધા બિંદુઓ સમાન અંતરે"
    ]
    
    for i, prop in enumerate(properties):
        turtle_obj.goto(-350, -80 - (i * 20))
        turtle_obj.write(prop, font=("Arial", 10, "normal"))
    
    # ગાણિતિક સૂત્રો
    turtle_obj.goto(-350, -170)
    turtle_obj.color("blue")
    turtle_obj.write("સૂત્રો:", font=("Arial", 12, "bold"))
    
    formulas = [
        "• ચોરસ ક્ષેત્રફળ: બાજુ²",
        "• લાંબચોરસ ક્ષેત્રફળ: લંબાઈ × પહોળાઈ",
        "• વતુળ ક્ષેત્રફળ: π × ત્રિજ્યા²"
    ]
    
    for i, formula in enumerate(formulas):
        turtle_obj.goto(-350, -200 - (i * 20))
        turtle_obj.write(formula, font=("Arial", 10, "normal"))

def interactive_shape_drawer():
    """યુઝર ઇન્ટરેક્શન સાથે એન્હાન્સ વર્ઝન"""
    
    screen, shape_turtle = setup_drawing_environment()
    
    # યુઝર પ્રાથમિકતાઓ મેળવો
    print("\n=== ઇન્ટરેક્ટિવ આકાર ડ્રોવર ===")
    
    try:
        # ચોરસ પેરામીટર્સ
        square_size = int(input("ચોરસ સાઈઝ દાખલ કરો (50-100): ") or "80")
        square_color = input("ચોરસ રંગ દાખલ કરો (લાલ/નીલો/લીલો): ") or "red"
        
        # લાંબચોરસ પેરામીટર્સ  
        rect_width = int(input("લાંબચોરસ પહોળાઈ દાખલ કરો (80-150): ") or "120")
        rect_height = int(input("લાંબચોરસ ઊંચાઈ દાખલ કરો (60-100): ") or "80")
        rect_color = input("લાંબચોરસ રંગ દાખલ કરો: ") or "green"
        
        # વતુળ પેરામીટર્સ
        circle_radius = int(input("વતુળ ત્રિજ્યા દાખલ કરો (40-80): ") or "60")
        circle_color = input("વતુળ રંગ દાખલ કરો: ") or "blue"
        
        # યુઝર પેરામીટર્સ સાથે આકાર દોરો
        draw_square(shape_turtle, square_size, square_color, (-300, 100))
        draw_rectangle(shape_turtle, rect_width, rect_height, rect_color, (-50, 100))
        draw_circle(shape_turtle, circle_radius, circle_color, (200, 100))
        
        add_shape_information(shape_turtle)
        
    except ValueError:
        print("અમાન્ય ઇનપુટ! ડિફોલ્ટ વેલ્યુઝ વાપરી રહ્યા છીએ...")
        return draw_all_shapes()
    
    return screen

# મુખ્ય એક્ઝિક્યુશન
def main():
    """વિકલ્પો સાથે મુખ્ય ફંક્શન"""
    
    print("ડ્રોઈંગ મોડ પસંદ કરો:")
    print("1. ડિફોલ્ટ આકારો")
    print("2. ઇન્ટરેક્ટિવ મોડ")
    
    choice = input("પસંદગી દાખલ કરો (1 અથવા 2): ").strip()
    
    if choice == "2":
        screen = interactive_shape_drawer()
    else:
        screen = draw_all_shapes()
    
    print("\nવિન્ડો બંધ કરવા માટે સ્ક્રીન પર ક્લિક કરો.")
    screen.exitonclick()

# પ્રોગ્રામ ચલાવો
if __name__ == "__main__":
    main()

આકાર લક્ષણોનું ટેબલ:

આકારબાજુઓપ્રોપર્ટીઝક્ષેત્રફળ સૂત્ર
ચોરસ4 સમાનબધા કોણ 90°બાજુ²
લાંબચોરસ4 (2 જોડ)સામેની બાજુઓ સમાનલંબાઈ × પહોળાઈ
વતુળ0 (વક્ર)બધા બિંદુઓ સમદૂરπ × ત્રિજ્યા²

આકાર ડ્રોઈંગ પ્રક્રિયા:

flowchart TD
    A[ડ્રોઈંગ શરૂ] --> B[ટર્ટલ સેટઅપ]
    B --> C[ચોરસ દોરો]
    C --> D[લાંબચોરસ દોરો] 
    D --> E[વતુળ દોરો]
    E --> F[લેબલ્સ ઉમેરો]
    F --> G[માહિતી દર્શાવો]
    G --> H[પૂર્ણ]
  • ભૌમિતિક ચોકસાઈ: ચોક્કસ કોણ અને અંતર માપદંડો
  • વિઝ્યુઅલ અપીલ: વિવિધ રંગો અને ભરેલા આકારો
  • શૈક્ષણિક મૂલ્ય: સૂત્રો દર્શાવે છે
  • ગાણિતિક ગણતરીઓ: ક્ષેત્રફળ સૂત્રો સામેલ
  • ઇન્ટરેક્ટિવ ફીચર્સ: યુઝર પેરામીટર્સ કસ્ટમાઈઝ કરી શકે

મેમરી ટ્રીક: “ચોરસ સમાન, લાંબચોરસ સામેના, વતુળ ગોળ”

સંબંધિત

ઇલેક્ટ્રિકલ અને ઇલેક્ટ્રોનિક્સ એન્જિનિયરિંગના તત્વો (1313202) - ઉનાળુ 2024 સોલ્યુશન
23 મિનિટ
અભ્યાસ-સામગ્રી સોલ્યુશન ઇલેક્ટ્રિકલ-એન્જિનિયરિંગ ઇલેક્ટ્રોનિક્સ-એન્જિનિયરિંગ 1313202 2024 ઉનાળુ
ઇલેક્ટ્રોનિક સર્કિટ્સ અને નેટવર્ક્સ (4331101) - ઉનાળુ 2024 સોલ્યુશન
અભ્યાસ-સામગ્રી સોલ્યુશન ઇલેક્ટ્રોનિક-સર્કિટ્સ નેટવર્ક્સ 4331101 2024 ઉનાળુ
આધુનિક ભૌતિકશાસ્ત્ર (DI01000061) - શિયાળો 2024 ઉકેલ
14 મિનિટ
અભ્યાસ-સામગ્રી ઉકેલો આધુનિક-ભૌતિકશાસ્ત્ર DI01000061 2024 શિયાળો
માહિતી પ્રણાલીનો પરિચય (4311602) - શિયાળો 2024 ઉકેલ
અભ્યાસ-સામગ્રી ઉકેલો આઈટી-સિસ્ટમ્સ 4311602 2024 શિયાળો
ડેટા સ્ટ્રક્ચર વિથ પાયથોન (4331601) - શિયાળો 2024 સોલ્યુશન
અભ્યાસ-સામગ્રી ઉકેલો ડેટા-સ્ટ્રક્ચર પાયથોન 4331601 2024 શિયાળો
ડિજિટલ ઇલેક્ટ્રોનિક્સ (4321102) - વિન્ટર 2024 સોલ્યુશન
22 મિનિટ
Study-Material Solutions Digital-Electronics 4321102 2024 Winter