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

درس 4. Lines

الصعوبة:

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

مسألة«فيديو»

💻 Python

قررت مشاهدة بث طويل جدًا، أو تسجيل محاضرة أو تشغيل لعبة. يعرض المشغل الوقت الذي شاهدته بالفعل، والمدة الإجمالية للفيديو. مهمتك & mdash; كتابة برنامج يحدد الجزء الذي شاهدته من الفيديو بأكمله ويعرض هذا الجزء في صورة كسر بسيط غير قابل للاختزال.

rn

على سبيل المثال، إذا شاهدت ساعتين و20 دقيقة، فهذا يمثل 1/3 من إجمالي الفيديو.

rn

يجب أن يستقبل البرنامج سطرين كمدخلات، يمثلان الوقت بصيغة "HH:MM:SS": السطر الأول & mdash; الوقت الذي تمت مشاهدته، والثاني & mdash; المدة الإجمالية. ثم يجب على البرنامج حساب وعرض الجزء في صورة قائمة من رقمين & nbsp; [البسط, المقام] & nbsp; ومرافقة المخرجات برسالة نصية مفهومة.

rn

قيد مهم: & nbsp; لإيجاد القاسم المشترك الأكبر وتبسيط الكسر، لا يمكنك استخدام دوال مدمجة من المكتبات (على سبيل المثال، من مكتبة & nbsp; math ). يجب عليك تنفيذ خوارزمية البحث بنفسك باستخدام & nbsp; for .

rn

& nbsp;

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

الوقت المُشاهَد (سلسلة نصية بتنسيق "ساعة: دقيقة: ثانية")
المدة الإجمالية للفيديو (سلسلة نصية بتنسيق "ساعة: دقيقة: ثانية")

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

كسر مبسط (قائمة مكونة من عددين صحيحين)
رسالة توضيحية (سطر)

مثال

إدخال

02:20:00
07:00:00

إخراج

لقد شاهدت 1/3 من إجمالي الفيديو.

تلميح

There will be no clue here, decide for yourself!

main.py
اختبار 1
اختبار 2
اختبار 3
اختبار 4
اختبار 5
اختبار 6
اختبار 7
اختبار 8
اختبار 9
اختبار 10
حل المطور
# Функция для преобразования времени в секунды
def time_to_seconds(time_str):
    # Разделяем строку времени на часы, минуты, секунды
    hours, minutes, seconds = map(int, time_str.split(':'))
    # Преобразуем все в секунды
    total_seconds = hours * 3600 + minutes * 60 + seconds
    return total_seconds

# Функция для нахождения наибольшего общего делителя (НОД)
def find_gcd(a, b):
    # Используем алгоритм Евклида
    while b != 0:
        a, b = b, a % b
    return a

# Считываем время просмотра и общее время
watched_time = input()
total_time = input()

# Преобразуем время в секунды
watched_seconds = time_to_seconds(watched_time)
total_seconds = time_to_seconds(total_time)

# Вычисляем долю просмотренного времени в виде дроби
numerator = watched_seconds
denominator = total_seconds

# Находим НОД для сокращения дроби
gcd = find_gcd(numerator, denominator)

# Сокращаем дробь
numerator //= gcd
denominator //= gcd

# Выводим результат
print(f"Вы просмотрели {numerator}/{denominator} всего видео.")

🎉 تهانينا! 🎉

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

AD

إعلان

red-snake blue-snake green-snake

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

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

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