• 1
    إدخال وإخراج البيانات
    • المهام
  • 2
    الشروط
    • المهام
  • 3
    حلقة for
    • المهام
  • 4
    السلاسل النصية
    • المهام
  • 5
    حلقة while
    • المهام
  • 6
    القوائم
    • المهام
  • 7
    مصفوفات ثنائية الأبعاد
    • المهام
  • 8
    القواميس
    • المهام
  • 9
    المجموعات
    • المهام
  • 10
    الدوال والتكرار
    • المهام
  • к

درس 2. Conditions

الصعوبة:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

مسألة«وقت التوصيل»

💻 Python

أنت تعمل كمبرمج في شركة "إكسبريس لوجستيكس". مهمتك الجادة الأولى — إنشاء آلة حاسبة للمديرين الذين سيحسبون الوقت والتكلفة النهائية لتوصيل طرد واحد. تعتمد الحسابات على عدة عوامل: منطقة التوصيل، وزن الطرد، وقت الطلب، ونوع التوصيل (عادي أو إكسبرس).

قواعد الحساب:

  1. التعريفات الأساسية للمناطق:
    • "المركزية" - الوقت الأساسي 30 دقيقة، التكلفة الأساسية - 150 روبل.
    • "السكنية" : الوقت الأساسي 60 دقيقة، التكلفة الأساسية 200 روبل.
    • "الصناعية" : الوقت الأساسي 90 دقيقة، التكلفة الأساسية 250 روبل.
    • إذا تم إدخال أي منطقة أخرى، يجب أن يبلغ البرنامج بأنها غير مخدومة.
  2. هامش الوزن:
    • إذا كان وزن الطرد   أكبر تمامًا   10 كجم، تتم إضافة 15 دقيقة إلى وقت التوصيل، وإلى التكلفة — 50 روبل. يُستخدم هذا الهامش   بعد   اختيار التعريفة الأساسية.
  3. ساعة الذروة:
    • ساعات الذروة   من 8 إلى 10 صباحًا (شاملًا)   و   من 17 إلى 20 مساءً (شاملًا) . إذا تم تقديم الطلب في ساعة الذروة، تتم إضافة 30 دقيقة إلى وقت التوصيل، وتزداد التكلفة الإجمالية (مع مراعاة الهامش المحتمل للوزن)   بنسبة 20%   (تُضرب في 1.2).
  4. معدّل التوصيل السريع (إكسبرس):
    • إذا تم تحديد نوع التوصيل "إكسبرس"، فإن الوقت الإجمالي المحسوب (مع مراعاة الوزن وساعة الذروة بالفعل)   يُقلل بمقدار النصف   (قسمة صحيحة)، والتكلفة الإجمالية (أيضًا مع جميع الهوامش)   تتضاعف .

الهدف:
اكتب برنامجًا يطلب جميع البيانات اللازمة من المستخدم ويعرض الوقت والتكلفة النهائيين للتوصيل. يجب تطبيق جميع الحسابات بالتسلسل بالترتيب المشار إليه.

تنسيق الإدخال

اسم المنطقة (السطر)
وزن الطرد (رقم المادة)
وقت الطلب (رقم صحيح يمثل الساعة، من 0 إلى 23)
نوع التوصيل (سطر، "قياسي" أو "سريع")

تنسيق الإخراج

الوقت النهائي والتكلفة (سطر) أو رسالة تفيد بأن المنطقة غير مخدومة (سطر).

مثال

إدخال

المركزية
5.5
14
قياسي

إخراج

وقت التوصيل النهائي: 30 دقيقة. التكلفة النهائية: 150 روبل.

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
# Запрашиваем у пользователя все необходимые данные для расчета
district = input()          # Название района доставки (строка)
weight = float(input())     # Вес посылки в кг (вещественное число)
hour = int(input())         # Час оформления заказа от 0 до 23 (целое число)
delivery_type = input()     # Тип доставки: "стандарт" или "экспресс" (строка)

time = 0  # Переменная для хранения итогового времени в минутах
cost = 0  # Переменная для хранения итоговой стоимости в рублях
is_valid_district = True # Флаг для проверки, обслуживается ли район

# Шаг 1: Определяем базовое время и стоимость в зависимости от района
if district == "Центральный":
    time = 30
    cost = 150
elif district == "Спальный":
    time = 60
    cost = 200
elif district == "Промышленный":
    time = 90
    cost = 250
else:
    # Если район не найден в списке, устанавливаем флаг в False
    is_valid_district = False

# Проверяем, был ли найден район. Если нет, то дальнейшие расчеты не нужны.
if is_valid_district:
    # Шаг 2: Применяем наценку за вес, если он больше 10 кг
    if weight > 10:
        time = time + 15
        cost = cost + 50

    # Шаг 3: Проверяем, попадает ли час заказа в час пик
    # Условие "И": (hour >= 8 и hour <= 10) - утренний пик
    # Условие "И": (hour >= 17 и hour <= 20) - вечерний пик
    # Условие "ИЛИ" между ними: or
    is_rush_hour = (hour >= 8 and hour <= 10) or (hour >= 17 and hour <= 20)
    if is_rush_hour:
        time = time + 30
        cost = cost * 1.2 # Увеличиваем стоимость на 20%

    # Шаг 4: Применяем модификатор для экспресс-доставки
    if delivery_type == "экспресс":
        time = time / 2 # Сокращаем время вдвое
        cost = cost * 2 # Увеличиваем стоимость вдвое

    # Выводим итоговый результат, округляя значения до целых чисел для аккуратности
    print(f"Итоговое время доставки: {int(time)} минут. Итоговая стоимость: {int(cost)} руб.")
else:
    # Если флаг is_valid_district остался False, выводим сообщение об ошибке
    print("Район не обслуживается")

🎉 تهانينا! 🎉

لقد حللت المهمة ببراعة! كان صعبًا لكنك وجدت الحل الصحيح. أنت خطوة أقرب إلى الاحتراف! استمر، كل مرحلة تجعلك أقوى.

AD

إعلان

red-snake blue-snake green-snake

جارٍ تشغيل الكود...

مساعد الذكاء الاصطناعي

مرحباً! أنا مساعدك في البرمجة. اسألني أي شيء عن Python — يمكنني شرح الدوال والطرق ومساعدتك في المهمة الحالية!