演算法小題目練習

2021-07-10 20:47:55 字數 1835 閱讀 2820

#!/usr/bin/env python

import sys

import logging

from collections import ordereddict

__author__ = 'thomas'

logging.basicconfig(level='debug')

logger = logging.getlogger('main')

defget_current_days_of_year

(year: int, month: int, day: int):

assert

0< month < 13

assert

0< day < 32

assert

1800

<= year <= 9999

# 閏年

if year % 400 == 0

or (year % 4 == 0

and year % 100 != 0):

spec_dict =

else:

spec_dict =

min_month =

max_month = [1, 3, 5, 7, 8, 10, 12]

if (month in min_month and day == 31) or (month == 2

and day > spec_dict.get(month)):

raise valueerror('月份:"{}"與日期"{}"不匹配')

min_dict = dict.fromkeys(min_month, 30)

max_dict = dict.fromkeys(max_month, 31)

month_days = ordereddict(

sorted(min_dict.items() | max_dict.items() | spec_dict.items(),

key=lambda item: item[0])

)# 計算月份所得天數和日子之和

count = 0

for key, value_ in month_days.items():

if month <= key:

break

count += value_

logger.info(count)

count += day

return count

if __name__ == '__main__':

if len(sys.argv) < 2:

logger.error('指令碼執行錯誤,請輸入日期引數, 如 "python get_date_days.py 2016/3/30" ')

exit(1)

value = sys.argv[1]

logger.debug(value)

try:

date = [int(num) for num in value.split('/')]

except valueerror:

raise valueerror('日期 "{}" 輸入錯誤,請輸入類似於 2016/3/30 這樣以斜桿分割的日期'.format(value))

if len(date) != 3:

raise valueerror('日期 "{}" 輸入錯誤,請輸入類似於 2016/3/30 這樣以斜桿分割的日期'.format(value))

days = get_current_days_of_year(*date)

print('這是今年的第{}天,今年還剩餘{}天!'.format(days, 365-days))

小題目練習

設score陣列中儲存8名同學的c語言成績,字串陣列name中儲存同學們的姓名。這兩個陣列中,每名同學的姓名與成績的下標要始終保持一致 例如name i 和score i 表示同一位同學 下標為i 的姓名和c語言成績,否則會張冠李戴 1 輸出按成績排序後的同學的名單 2 輸出按同學姓名排序後的成績單...

c語言小題目練習

題目1 乙個數如果恰好等於它的因子之和,這個數就稱為 完數 例如6 1 2 3.程式設計找出1000以內的所有完數。include int main if sum i return 0 題目2 有一分數序列 2 1,3 2,5 3,8 5,13 8,21 13.求出這個數列的前20項之和。inclu...

面試小題目

public class test class a class b extends a b int i a建構函式被執行了!3haa建構函式被執行了!b建構函式被執行了!3haa建構函式被執行了!1111b建構函式被執行了!19wa package com.yoko.test1 class fath...