函数

# 1.	请手写一个函数,用来取出1—100(均包含)中5的倍数或者带有数字5的所有整数
# def func(b):  # 定义函数 添加形参 b
#
#     for i in range(1, b + 1):  # 循环所有1-b所有数字
#         if i % 5 == 0 or "5" in str(i):  # 判断3的倍数或者带有数字3的所有整数
#             print(i)  # 输出
#
#
# func(100)  # 调用函数 添加实参


# 2.	lis = [2,3,'k',['qwe',20,['k',['tt',3,'1']],89],'ab','adv']  写一个函数将该列表中的tt变成大写
# def func():
#     lis = [2, 3, 'k', ['qwe', 20, ['k', ['tt', 3, '1']], 89], 'ab', 'adv']
#     lis[3][2][1][0] = 'TT'  # 查下标替换tt 为 TT
#     print(lis)
#
#
# func()


# 3. 打印该年所有月份,并显示所属季节,如:“1月 冬季 2月 冬季 3月 春季”等
# class MyYear(object):
#
#     def __init__(self, year):  # 定义实例属性
#         self.year = year
#
#     def show_season(self):
#         for i in range(1, 13):  # 循环 1 - 12,然后判断
#             if i >= 3 and i <= 5:
#                 print("%d 春季" % i)
#             elif i >= 6 and i <= 8:
#                 print("%d 夏季" % i)
#             elif i >= 9 and i <= 11:
#                 print("%d 秋季" % i)
#             else:
#                 print("%d 冬季" % i)
#
#
# year = int(input('输入年份:'))
# p = MyYear(year)
# p.show_season()


# 4. 用户由键盘随机输入一个年份,如:2018,打印该年是否是闰年(能被4整除但不能被100整除,或者能被400整除的年	份)
# class MyYear(object):
#
#     def __init__(self, year):  # 定义实例属性
#         self.year = year
#
#     def isleap(self):
#         if self.year % 400 == 0 or (self.year % 4 == 0 and self.year % 100 != 0):  # 判断闰年
#             print("%d年是闰年" % self.year)
#         else:
#             print("%d不是闰年" % self.year)
#
#
# year = int(input('输入年份:'))
# p = MyYear(year)
# p.isleap()


# 5. 判断数字是否是回文数(数字顺读和逆读都是一样)
# class MyYear(object):
#
#     def __init__(self, year):  # 定义实例属性
#         self.year = year
#
#     def check_num(self):
#         self.year = str(self.year)  # 转换类型
#         if self.year == self.year[::-1]:  # 判断是否是回文数
#             print("%d是回文数" % int(self.year))
#         else:
#             print("%d不是回文数" % int(self.year))
#
#
# year = int(input('输入年份:'))
# p = MyYear(year)
# p.check_num()

面向对象

# 1. 功能描述
# 定义一个类:MyYear ,它包含:
class MyYear(object):
    # 1个实例属性:year
    # 用户由键盘随机输入一个年份,如:2018,将该值作为MyYear类__init__方法的一个参数传入,并赋给类的实例属性year
    def init(self, year):  # 定义实例属性
        self.year = year

    # 7个实例方法:
    # 1)	show_season()
    # 打印该年所有月份,并显示所属季节,如:“1月 冬季 2月 冬季 3月 春季”等
    def show_season(self):
        for i in range(1, 13):  # 循环 1 - 12,然后判断
            if i >= 3 and i <= 5:
                print("%d 春季" % i)
            elif i >= 6 and i <= 8:
                print("%d 夏季" % i)
            elif i >= 9 and i <= 11:
                print("%d 秋季" % i)
            else:
                print("%d 冬季" % i)

    # 2)	isleap()
    # 打印该年是否是闰年(能被4整除但不能被100整除,或者能被400整除的年	份),如:如果属性year的值为2018,则输出:“2018年不是闰年”
    def isleap(self):
        if self.year % 4000 or (self.year % 40 and self.year % 100 != 0):  # 判断闰年
            print("%d年是闰年" % self.year)

        else:
            print("%d不是闰年" % self.year)

    # 3)	year_sum()
    # 打印从1到该年所在数字之间所有整数的和,如:如果属性year的值为2018,	则计算1+2+3+4+5+...+2018的值并输出结果。
    def year_sum(self):
        print(sum(range(1, self.year)))  # 循环计算 1-self.year 的和

    # 4)	check_num()
    # 判断该年所在数字是否是回文数(即是给定一个数,这个数顺读和逆读都是一样	的)并输出判断结果,如:如果属性year的值为2002,则输出“2002是回文	数”,	如果属性year的值为2018,则输出“2018不是回文数”
    def check_num(self):
        self.year = str(self.year)  # 转换类型

        if self.year == self.year[::-1]:  # 判断是否是回文数
            print("%d是回文数" % int(self.year))
        else:
            print("%d不是回文数" % int(self.year))

    # 5)	show_leap_year()
    # 判断从公元1年到该年所在的区间内的所有年份,输出所有闰年年份
    # 如:如果属性year的值为20,则输出 4  8  12 16  20
    def show_leap_year(self):
        self.year = int(self.year)  # 转换类型

        for i in range(1, self.year + 1):  # 循环1—year所有年份
            if (i % 40 and i % 100 != 0) or (i % 4000):  # 判断闰年
                print(int(i))

    # 6)	show_num_div()
    # 打印出从1-该年所在数字之间所有能被9整除或者包含数字9的年份,
    # 如:如果属性year的值为20,则输出 9 18 19
    def show_num_div(self):
        for i in range(1, self.year + 1):  # 循环1—year所有年份
            if i % 9 == 0 or '9' in str(i):  # 判断9整除或者包含数字9的年份
                print(i)


year = int(input('输入年份:'))
p = MyYear()
p.show_season()
p.isleap()
p.year_sum()
p.check_num()
p.show_leap_year()
p.show_num_div()


# 2. 功能描述
# 定义一个类:MyNum,它包含:
class MyNum():
    # 1个实例属性:num
    # 用户由键盘随机输入一个正整数数字,如:100,将该值作为MyNum类__init__方法的一个参数传入,并赋给类的实例属性num
    def init(self, num):  # 实例属性
        self.num = num

    # 6个实例方法:
    # 1)	show_num()
    # 打印从1到属性num之间所有的数字,如:如果属性num为100,则打印“1 2 3 4 ...99 	100”
    def show_num(self, num):
        for i in range(1, num + 1):  # 循环1到属性num之间所有的数字
            print(i)

    # 2)	calc_sum()
    # 计算从1-num之间所有数字的和并输出,如:如果属性num的值为100,则计算	1+2+3+...+99+100的值
    def calc_sum(self, num):
        print(sum(range(1, num + 1, )))  # 1到属性num之间所有的数字计算和

    # 3)	calc_odd_sum()
    # 计算从1-num之间所有奇数的和并输出,如:如果属性num的值为100,则计算	1+3+5+7+...+99的值
    def calc_odd_sum(self, num):
        print(sum(range(1, num + 1, 2)))  # 1到属性num之间所有的数字计算奇数和

    # 4)	calc_even_sum()
    # 计算从1-num之间所有偶数的和并输出,如:如果属性num的值为100,则计算	2+4+6+8+...+100的值
    def clac_even_sum(self, num):
        print(sum(range(0, num + 1, 2)))  # 1到属性num之间所有的数字计算偶数和

    # 5)	show_num_div()
    # 打印出从1-num之间所有能被7整除的数
    def show_num_div(self, num):
        l = [i for i in range(1, num + 1) if i % 7 == 0]

        print(l)

    # 6)	check_num()
    # 判断num是否是回文数(即是给定一个数,这个数顺读和逆读都是一样的)并输	出判断结果,如:如果属性num的值为101,则输出“101是回文数”;如果属性	num的值为123,则输出“123不是回文数”
    def check_num(self, num):
        self.num = str(self.num)  # 装换类型

        if self.num == self.num[::-1]:  # 判断是否是回文数
            print("%d是回文数" % int(self.num))
        else:
            print("%d不是回文数" % int(self.num))


num = int(input('请输入数字'))
p = MyNum(num)
p.show_num()
p.calc_sum()
p.calc_odd_sum()
p.clac_even_sum()
p.show_num_div()
p.check_num()