人工智能实习 -Python练习题-Day4

第四天的第一题用到了对象和类,有难度,大家尽力去写,题目后面跟的为答案。

1、记录企业员工的信息,包括name,age,sex、address等特征。并且实现企业员工的信息增加,删除,显示员工全部信息。

class Employee:
    def __init__(self, name, age, sex, address):
        self.name = name
        self.age = age
        self.sex = sex
        self.address = address

    def __str__(self):
        return f"Name: {self.name}, Age: {self.age}, Sex: {self.sex}, Address: {self.address}"


class EmployeeManagement:
    def __init__(self):
        self.employees = []

    def add_employee(self, name, age, sex, address):
        new_employee = Employee(name, age, sex, address)
        self.employees.append(new_employee)
        print(f"Employee {name} added successfully.")

    def delete_employee(self, name):
        for employee in self.employees:
            if employee.name == name:
                self.employees.remove(employee)
                print(f"Employee {name} deleted successfully.")
                return
        print(f"Employee {name} not found.")

    def display_employees(self):
        if not self.employees:
            print("No employees found.")
            return
        print("All employees:")
        for employee in self.employees:
            print(employee)


def main():
    em = EmployeeManagement()

    while True:
        print("\nOptions: add, delete, display, quit")
        option = input("Enter an option: ").strip().lower()

        if option == "add":
            name = input("Enter name: ").strip()
            age = input("Enter age: ").strip()
            sex = input("Enter sex: ").strip()
            address = input("Enter address: ").strip()
            em.add_employee(name, age, sex, address)

        elif option == "delete":
            name = input("Enter name of the employee to delete: ").strip()
            em.delete_employee(name)

        elif option == "display":
            em.display_employees()

        elif option == "quit":
            print("Exiting the program.")
            break

        else:
            print("Invalid option, please try again.")


if __name__ == "__main__":
    main()

2、读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。

# 定义数字对应的汉语拼音
num_to_pinyin = ["ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"]

def sum_of_digits(n):
    # 计算 n 的各位数字之和
    sum_digits = sum(int(digit) for digit in str(n))
    return sum_digits

def number_to_pinyin(number):
    # 将数字转换为汉语拼音
    pinyin_list = [num_to_pinyin[int(digit)] for digit in str(number)]
    return ' '.join(pinyin_list)

# 读取输入
n = input().strip()

# 计算各位数字之和
sum_digits = sum_of_digits(n)

# 将结果转换为汉语拼音并输出
result = number_to_pinyin(sum_digits)
print(result)

3、根据 1 1 2 3 5 8 13...的斐波那契数列,输出100以内的斐波那契数

def fibonacci(limit):
    # 初始化斐波那契数列的前两个数
    fib_sequence = [1, 1]

    # 生成斐波那契数列直到下一个数超过限制
    while True:
        next_fib = fib_sequence[-1] + fib_sequence[-2]
        if next_fib >= limit:
            break
        fib_sequence.append(next_fib)

    return fib_sequence


# 设定限制为100
limit = 100

# 获取并输出100以内的斐波那契数
fib_sequence = fibonacci(limit)
print(fib_sequence)

4、一个数组,A中存有N(> 0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(> 0)个位置, 即将A中的数据由(A0A1···AN-1)变换为(AN-M··AN-1A0A1··AN-M-1)(最后M个数循环移至最前面的M个位置)。 如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 每个输入包含一个测试用例,第1行输入N(1<N<100)和M(> 0);第2行输入N个整数,之间用空格分隔。 输出格式: 在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。 输入样例:

6 2
1 2 3 4 5 6
输出样例:
5 6 1 2 3 4

样例:

def reverse(arr, start, end):
    """反转数组从 start 到 end 的部分"""
    while start < end:
        arr[start], arr[end] = arr[end], arr[start]
        start += 1
        end -= 1

def right_rotate(arr, n, m):
    """循环右移数组 arr 的元素 m 位"""
    m = m % n  # 如果 m 大于 n,取 m 对 n 的模
    if m == 0:
        return arr

    # 第一步:反转整个数组
    reverse(arr, 0, n-1)
    # 第二步:反转前 m 个元素
    reverse(arr, 0, m-1)
    # 第三步:反转后 n-m 个元素
    reverse(arr, m, n-1)

    return arr

# 读取输入
n, m = map(int, input().split())
arr = list(map(int, input().split()))

# 循环右移
right_rotate(arr, n, m)

# 打印结果
print(' '.join(map(str, arr)))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新三晴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值