1、定义一个is_leap(year)函数,该函数可以判度year是否为闰年。若是闰年,则返回True;否则返回False。

import sys
def is_leap(year):
    year = int(year)
    if year % 4 != 0:
        return False
    elif year % 100 != 0:
        return True
    elif year % 400 != 0:
        return False
    else:
        return True
while(True):
    year = input("请输入年份:")
    if year == 'exit':
        sys.exit(0)
    if is_leap(year):
        print("您输入的年份是闰年。")
    else:
        print("您输入的年份不是闰年。")

2、定义一个count_str_char(my_str)函数,该函数返回参数字符串中包含多少个数字,多少个字母,多少个空白字符,多少个其他字符。

import sys
def count_str_char(my_str):
    digit, char, kong, other = 0, 0, 0, 0
    for i in my_str:
        if i.isdigit(): digit += 1
        elif i.isalpha(): char += 1
        elif i.isspace(): kong += 1
        else: other += 1
    return digit, char, kong, other
while(True):
    my_str = input("请输入字符串:")
    if my_str == 'exit':
        sys.exit(0)
    digit, char, kong, other = count_str_char(my_str)
    print("数字的个数是:%d" % digit)
    print("字母的个数是:%d" % char)
    print("空格的个数是:%d" % kong)
    print("其他字符的个数是:%d" % other)

3、定义一个f(n)函数,该函数返回1~n的立方和,即求1+222+333+…+nnn。

import sys
def fn(n):
    n = int(n)
    lifang = 1
    for i in range(1, n+1):
        lifang += i**3
    return lifang
while(True):
    n = input("请输入数字:")
    if n == 'exit':
        sys.exit(0)
    print(fn(n))

4、定义一个函数,该函数可接受一个list作为参数,该函数用于去除list中重复的元素。

def quchong(my_list):
    xin_list = []
    for i in my_list:
        if i not in xin_list:
            xin_list.append(i)
    return xin_list
my_str = input("请输入字符串:")
my_list = list(my_str)
new_list = quchong(my_list)
new_str = "".join(new_list)
print(new_str)

5、定义一个f(n)函数,该函数返回一个包含n个不重复的0~100之间整数的元组。

import random
def f(n):
    my_list = []
    for i in range(n):
        j = random.randint(0, 100)
        if j not in my_list:
            my_list.append(j)
    return tuple(my_list)
n = int(input("请输入一个整数:"))
print(f(n))

6、定义一个fn(n)函数,该函数返回一个包含n个不重复的大写字母的元组。

import random
def fn(n):
    my_list = []
    new_list = []
    for i in range(n):
        j = random.randint(65, 90)
        if j not in my_list:
            my_list.append(j)
    for i in my_list:
        new_list.append(chr(i))
    return tuple(new_list)
n = int(input("请输入一个整数:"))
print(fn(n))

7、定义一个fn(n)函数,其中n表示输出n行n列的矩阵,在输出时,西安输出n行n列的矩阵,再输出该矩阵的转置形式。例如,当参数为3时,先输出:

python求闰年代码并打印列表 python求闰年个数_数据结构


再输出:

python求闰年代码并打印列表 python求闰年个数_数据结构_02

def fn(n):
    # 输出矩阵
    for i in range(n):
        for j in range(n):
            print(' %2d ' % (i * n + j + 1), end="")
        print()
    print('-' * (4 * n))
    # 输出转置矩阵
    for i in range(n):
        for j in range(n):
            print(' %2d ' % (j * n + i + 1), end="")
        print()
n = int(input("请输入整数n:"))
fn(n)

8、编写一个学生类,提供name、age、phone、address、email等属性,为学生类提供带所有成员变量的构造器,为学生提供方法,用于描绘吃、喝、玩、睡等行为。

class Student:
    def __init__(self, name, age, gender, phone, address, email):
        self.name = name
        self.age = age
        self.gender = gender
        self.phone = phone
        self.address = address
        self.email = email
    def eat(self, food):
        print("%s正在吃%s" % (self.name, food))
    def drink(self, drink):
        print("%s正在喝%s" % (self.name, drink))
    def play(self, game):
        print("%s正在玩%s" % (self.name, game))
    def sleep(self):
        print("%s正在睡觉" % self.name)
Tom = Student('Tom', 13, '男', '156165', 'road2', '564654@qq.com')
print(Tom.address)
Tom.drink('water')

9、利用上一题定义的Student类,定义一个列表保存多个Student对象作为通讯录数据。程序可通过name、Email、address查询,如果找不到数据,则进行友好提示。

class Student:
    def __init__(self, name, age, gender, phone, address, email):
        self.name = name
        self.age = age
        self.gender = gender
        self.phone = phone
        self.address = address
        self.email = email
    def eat(self, food):
        print("%s正在吃%s" % (self.name, food))
    def drink(self, drink):
        print("%s正在喝%s" % (self.name, drink))
    def play(self, game):
        print("%s正在玩%s" % (self.name, game))
    def sleep(self):
        print("%s正在睡觉" % self.name)
tongxunlu = [Student('Davide', 59, '男', '4561615', 'road632', '4616@qq.com'),
             Student('Lisa', 16, '女', '5648498', 'road895', 'sda546@qq.com'),
             Student('Jack cheng', 62, '男', '7758258', 'road426', 'dcs6546@qq.com')]
def find(shuju):
    for i in tongxunlu:
        if shuju == i.name:
            return i
        elif shuju == i.email:
            return i
        elif shuju == i.address:
            return i
    else:
        return None
if __name__ == '__main__':
    shuju = input("请输入name or email or address:")
    if find(shuju) == None:
        print("查无此人")
    else:
        print(find(shuju).name, find(shuju).age, find(shuju).gender,
            find(shuju).phone, find(shuju).address, find(shuju).email)

10、定义代表二维坐标系上某个点的Point类(包括x, y两个属性),为该类提供一个方法用于计算两个Point之间的距离,再提供一个方法用于判断三个Point组成的三角形是钝角、锐角还是直角三角形。

class Point:
    def __init__(self, x, y):
        self.x = x
        self.y = y
    def distance(self, point2):
        distance = ((self.x - point2.x)**2 + (self.y - point2.y)**2)**0.5
        return distance
    def triangle(self, point2, point3):
        side12 = self.distance(point2)
        side13 = self.distance(point3)
        side23 = point2.distance(point3)
        # 按从小到大的顺序排列三条边
        if side12 > side13:
            side12, side13 = side13, side12
        if side13 > side23:
            side13, side23 = side23, side13
        #判断是否构成三角形
        if side12 + side13 <= side23:
            print("不构成三角形")
            return
        elif side12**2 + side13**2 == side23**2:
            print("构成直角三角形")
        elif side12**2 + side13**2 > side23**2:
            print("构成锐角三角形")
        else:
            print("构成钝角三角形")
if __name__ == '__main__':
    point1 = Point(2, 3)
    point2 = Point(5, 10)
    point3 = Point(12, 35)
    side12 = point1.distance(point2)
    side13 = point1.distance(point3)
    side23 = point2.distance(point3)
    print(side12, side13, side23)
    point1.triangle(point2, point3)