1. 程式人生 > 實用技巧 >演算法題 整理--- 不定時更新

演算法題 整理--- 不定時更新

輸入指定年月日,判斷這一天是這一年中的第幾天?(可區分平年,閏年)

# 方法一
import datetime

while 1:

    year = int(input("請輸入年份:\n"))
    month = int(input("請輸入月份:\n"))
    day = int(input("請輸入當月哪一天:\n"))

    targetDay = datetime.date(year, month, day)
    dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31)
    print("%s是%s年的第%s天." % (targetDay, targetDay.year, dayCount))

# 方法二

year = int(input("年:"))
while True:
    month = int(input("月:"))
    if 1 <= month <= 12:
        while True:
            day = int(input("日:"))
            days = 0
            months_1 = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
            months_2 = [0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
            if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
                if 1 <= day <= months_2[month]:
                    for i in range(month):
                        days += months_2[i]
                    days += day
                    print("%d年%d月%d日 是%d年的第%d天" % (year, month, day, year, days))
                    break
                else:
                    print("請輸入正確的日期!")
            else:
                if 1 <= day <= months_1[month]:
                    for i in range(month):
                        days += months_1[i]
                    days += day
                    print("%d年%d月%d日 是%d年的第%d天" % (year, month, day, year, days))
                    break
                else:
                    print("請輸入正確的日期!")
        break
    else:
        print("請輸入正確的月份!")

二分查詢


def binary_search(my_list, num):

    low = 0
    high = len(my_list) - 1

    while low <= high:
        mid = int((low + high) / 2)
        guess = my_list[mid]

        if guess == num:
            return mid
        elif guess > num:
            # 說明猜大了
            high = mid - 1
        else:
            low = mid + 1

    return None


def main():
    """主函式"""
    my_list = [1, 3, 5, 7, 9]  # 有序列表
    num = 5  # 要猜測的數字
    print(binary_search(my_list, num))


if __name__ == '__main__':
    main()

待更新 ~ ~ ~

······