Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - หาเวลาที่ถูกต้องและล่าสุดจากรูปแบบเวลาที่มีตัวแทนที่ไม่ทราบค่า

เมื่อได้รับสตริงเวลาในรูปแบบ HH:MM ที่บางตัวอักษรเป็น ? (ไม่ทราบค่า) เราต้องการแทนที่ ? เพื่อให้ได้เวลาที่ถูกต้องและเป็นเวลาที่มากที่สุด (Latest valid time) โดยพิจารณาข้อจำกัดของรูปแบบเวลา 24 ชั่วโมง

กฎการแทนที่

  • ตำแหน่ง 0 (ชั่วโมงหลัก): ถ้าตัวถัดไปเป็น ? หรือ 0-3 ใช้ 2 มิฉะนั้นใช้ 1
  • ตำแหน่ง 1 (ชั่วโมงรอง): ถ้าตัวแรกเป็น 2 ใช้ 3 มิฉะนั้นใช้ 9
  • ตำแหน่ง 3 (นาทีหลัก): ใช้ 5 เสมอ (นาทีสูงสุด 59)
  • ตำแหน่ง 4 (นาทีรอง): ใช้ 9 เสมอ

ตัวอย่างโค้ด

def find_latest_time(my_time):
    my_time = list(my_time)
    for i in range(len(my_time)):
        if my_time[i] == "?":
            if i == 0:
                my_time[i] = "2" if my_time[i+1] in "?0123" else "1"
            elif i == 1:
                my_time[i] = "3" if my_time[0] == "2" else "9"
            elif i == 3:
                my_time[i] = "5"
            else:
                my_time[i] = "9"
    print("".join(my_time))

my_str = '0?:?3'
print("The time is :")
print(my_str)
print("The latest valid time is : ")
find_latest_time(my_str)

ผลลัพธ์

The time is : 0?:?3
The latest valid time is : 09:53

คำอธิบาย

  • แปลงสตริงเป็นลิสต์เพื่อแก้ไขตัวอักษรได้
  • วนลูปตรวจสอบทุกตำแหน่งที่เป็น ?
  • ใช้เงื่อนไข if-elif ตามตำแหน่งเพื่อเลือกค่าสูงสุดที่ถูกต้อง
  • รวมลิสต์กลับเป็นสตริงและแสดงผล