Python【每日一问】23

问:

【基础题】:判断 101-200 之间有多少个素数,并输出所有素数

PS:素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数

【提高题】:输入某年某月某日,判断这一天是周几?(不能用库)

答:

【基础题】:判断 101-200 之间有多少个素数,并输出所有素数

 

PS:素数:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数

 方法1:

prime_number_list = []
for i in range(101, 201):
    for j in range(2, int(i**0.5)+1):
        if i % j == 0:
            break
    else:
        prime_number_list.append(i)
print("101-200之间的素数有:{}个".format(len(prime_number_list)))
print(prime_number_list)

方法2:

'''
求100到200以内的素数
'''

prime_number_list = [2]
for i in range(3, 201):
    for prime_number in prime_number_list:
        if i % prime_number == 0:
            break
    else:
        prime_number_list.append(i)
        
filtered_prime_number_list = list(filter(lambda x: x>= 101, prime_number_list))

print(filtered_prime_number_list)

输出结果:

[101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199]

 

【提高题】:输入某年某月某日,判断这一天是周几?(不能用库) 

 

import re

# 1582年10月15是周六

class calen:
    def __init__(self, year, month, day):
        self.Year = year
        self.Month = month
        self.Day = day
        self.other = 16 + 30 + 31
        '''
            1582年以前各国日历计算不太一样,
            所以1582年以前一年不知道多少天,345天都有可能。
            因此直接从1583年算起的,1582.10.15到1582.12.31一共 self.other 天
        '''

    # 判断闰年
    def is_leap_year(self, year):
        if (year % 400 == 0) or (year % 100 != 0 and year % 4 == 0):
            return 366
        else:
            return 365

    def week(self):
        weekdays = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
        monthday = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
        # 判断二月
        if self.is_leap_year(self.Year) == 366:
            monthday[1] = 29
        day_sum = 0
        # 判断年数
        for y_year in range(1583, self.Year):
            if self.is_leap_year(y_year) == 366:
                day_sum += 366
            else:
                day_sum += 365

        # 判断月数
        for m_month in range(self.Month - 1):
            day_sum += monthday[m_month]

        # 天数
        day_sum += self.Day
        
        weekday = (day_sum - self.other - 10) % 7
        print("这一天是{}".format(weekdays[weekday]))


if __name__ == "__main__":
    input_date = input('请输入日期(年-月-日):')
    year_number, month_number, day_number = map(int, re.findall(r'\d+', input_date))
    w = calen(year_number, month_number, day_number)
    w.week()

 

输出结果:

 

posted on 2019-05-14 11:01  D小调的微笑  阅读(174)  评论(0编辑  收藏  举报