নিয়ন্ত্রণ#

ভূমিকা#

পাইথনের কন্ট্রোল আপনাকে রোবটকে বলে দিতে পারে কখন অপেক্ষা করতে হবে, কখন কোনো কাজের পুনরাবৃত্তি করতে হবে, কীভাবে সিদ্ধান্ত নিতে হবে এবং কখন প্রজেক্টটি শেষ করতে হবে।

নিম্নে উপলব্ধ কন্ট্রোলগুলোর একটি তালিকা দেওয়া হলো, যার মধ্যে মেথড এবং পাইথনের মূল কীওয়ার্ডগুলো অন্তর্ভুক্ত রয়েছে:

  • wait – একটি নির্দিষ্ট সময়ের জন্য প্রকল্পটি থামিয়ে দেয়।

  • for – একটি অনুক্রমের প্রতিটি আইটেমের জন্য কোডের পুনরাবৃত্তি করে।

  • if – কোনো শর্ত সত্য হলে কোডটি রান করে।

  • if/else – শর্তের উপর নির্ভর করে ভিন্ন কোড চালায়।

  • if/elif/else – একাধিক শর্ত ক্রমানুসারে পরীক্ষা করে।

  • while – যতক্ষণ একটি শর্ত সত্য থাকে, ততক্ষণ কোডটি পুনরাবৃত্তি করে।

  • break – লুপ থেকে অবিলম্বে বেরিয়ে যায়।

  • quit – চলমান প্রকল্পটি বন্ধ করে।

  • pass – যখন কোনো পদক্ষেপের প্রয়োজন হয় না তখন ব্যবহৃত প্লেসহোল্ডার।

wait#

wait কোডের পরবর্তী লাইনে যাওয়ার আগে একটি নির্দিষ্ট সময়ের জন্য বিরতি দেয়।

Usage:
wait(time, units)

প্যারামিটার

বর্ণনা

time

অপেক্ষা করার সময়, যা একটি ধনাত্মক পূর্ণ সংখ্যা বা দশমিক সংখ্যা হিসেবে প্রকাশ করতে হবে।

units

অপেক্ষার সময় বোঝানোর একক: MSEC (ডিফল্ট) – মিলিসেকেন্ড, অথবা SECONDS

# Fly for 1 second.
drone.take_off(climb_to=500)
wait(1, SECONDS)
drone.land()

for#

for একটি নির্দিষ্ট সংখ্যক বার একগুচ্ছ ক্রিয়ার পুনরাবৃত্তি করে। for তালিকা, টাপল, ডিকশনারি, সেট, স্ট্রিং-এর আইটেমগুলির মধ্যে লুপ করতে, অথবা range সহ একটি নির্দিষ্ট সংখ্যক লুপের জন্য ব্যবহার করা যেতে পারে।

ব্যবহার:

for value in expression_list:
    pass

উপাদান

বর্ণনা

value

একটি অস্থায়ী ভেরিয়েবল যা পুনরাবৃত্তির বর্তমান উপাদানটি সংরক্ষণ করে।

expression_list

যেসব উপাদানের মধ্য দিয়ে লুপ চালানো হচ্ছে (যেমন, লিস্ট, স্ট্রিং, রেঞ্জ)।

# Move back and forth four times then land.
drone.take_off(climb_to=500)
for i in range(4):
    drone.move_for(direction=0, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
    drone.move_for(direction=180, distance=500, velocity=50, units=MM)
    wait(1, SECONDS)
drone.land()

# Print each item in a list.
colors = ["Red", "Green", "Blue"]
for color in colors:
    controller.screen.print(color)
    controller.screen.next_row()

if#

যদি শর্তটি True হয়, তাহলে if হয় তবে ইনডেন্ট করা কোড ব্লকটি চলে।

ব্যবহারবিধি:

if condition:
    pass

উপাদান

বর্ণনা

condition

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। যদি এটি Trueহয়, তাহলে if ব্লকের ভেতরের কোডটি এক্সিকিউট হয়; যদি এটি Falseহয়, তাহলে ব্লকটি এড়িয়ে যাওয়া হয়।

# Take a picture when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )

    if controller.button5.pressing():
        drone.camera.capture_image(FORWARD_CAMERA)

    wait(5, MSEC)

if/else#

if and else determine which indented block of code runs based on whether the condition is True or False.

ব্যবহারবিধি:

if condition:
    pass
else:
    pass

উপাদান

বর্ণনা

condition

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। যদি এটি Trueহয়, তাহলে if ব্লকের ভেতরের কোডটি এক্সিকিউট হয়; যদি এটি Falseহয়, তাহলে এর পরিবর্তে else ব্লকের ভেতরের কোডটি এক্সিকিউট হয়।

# Climb when the left joystick is moved up.
drone.take_off(climb_to=500)
while True:
    if controller.axis1.position() > 0:
        drone.climb(direction=UP, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

if/elif/else#

if/elif/else কাঠামোটি শর্তের উপর ভিত্তি করে নির্বাচন করে যে কোন ইনডেন্টেড কোড ব্লকটি চলবে:

  • if তার ব্লকটি চালায় যদি শর্তটি True হয়।

  • elif অতিরিক্ত শর্তগুলো কেবল তখনই যাচাই করে যখন পূর্ববর্তী সকল শর্ত Falseহয়। একাধিক elif স্টেটমেন্ট ব্যবহার করা যেতে পারে।

  • else তার ব্লকটি তখনই চালায় যদি পূর্ববর্তী কোনো শর্তই True না হয়।

ব্যবহারবিধি:

if condition:
    pass
elif condition:
    pass
else:
    pass

উপাদান

বর্ণনা

condition

একটি এক্সপ্রেশন বা ভেরিয়েবল যা স্টেটমেন্টটি চলার সময় যাচাই করা হয়। প্রথম যে শর্তটি True হয়, সেটিই নির্ধারণ করে কোন ব্লকটি এক্সিকিউট হবে; যদি কোনোটিই Trueনা হয়, তাহলে else ব্লকটি চলে।

# Move the drone up or down based on the position of the joystick.
drone.take_off(climb_to=500)
while True:
    position = controller.axis1.position()
    if position > 0:
        drone.climb(direction=UP, velocity=50)
    elif position < 0:
        drone.climb(direction=DOWN, velocity=50)
    else:
        drone.hover()
    wait(5, MSEC)

while#

while যতক্ষণ শর্তটি Trueথাকে, ততক্ষণ কোডটি বারবার চালায়। এটিকে True শর্ত হিসেবে ব্যবহার করে “forever”-এর মতো, অথবা শর্তের সাথে not যোগ করে “wait until”-এর মতোও ব্যবহার করা যায়, যেমনটা নিচের উদাহরণগুলোতে দেখানো হয়েছে।

ব্যবহারবিধি:

while condition:
    pass

উপাদান

বর্ণনা

condition

একটি এক্সপ্রেশন বা ভেরিয়েবল যা প্রতিটি পুনরাবৃত্তির আগে পরীক্ষা করা হয়। যদি এর মান Trueহয়, লুপটি চলতে থাকে; যদি এর মান Falseহয়, লুপটি থেমে যায়।

# Hover at 200 mm.
drone.take_off(climb_to=500)
while drone.range.get_distance(DOWNWARD_RANGE, MM) > 200:
    drone.climb(direction=DOWN, velocity=10)
drone.hover()
wait(3, SECONDS)
drone.land()

break#

break একটি লুপ থেকে অবিলম্বে বেরিয়ে যায়। break এমন লুপ থেকে বেরিয়ে আসতে ব্যবহার করা যেতে পারে যা অন্যথায় অনন্তকাল ধরে চলতে থাকবে।

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        break
    wait(5, MSEC)
drone.land()

quit#

quit একটি চলমান প্রকল্প বন্ধ করুন

Usage:
quit()

প্যারামিটার

বর্ণনা

এই পদ্ধতিতে কোনো প্যারামিটার নেই।

# Land when button 5 is pressed.
drone.take_off(climb_to=500)
while True:
    # Move with controller
    drone.move_with_vectors(
        forward=controller.axis4.position(),
        rightward=controller.axis3.position(),
        upward=controller.axis1.position(),
        rotation=controller.axis2.position()
    )
    if controller.button5.pressing():
        quit()
    wait(5, MSEC)
drone.land()

pass#

pass হলো ভবিষ্যতের কোডের জন্য একটি প্লেসহোল্ডার এবং এটি খালি লুপ, কন্ডিশনাল ও ফাংশনে ত্রুটি এড়াতে ব্যবহার করা যেতে পারে।

if condition:
    pass

def function():
    pass