python基础和类的设计

img

img


目前在自学python,求解一下第一问和第二问,对这块掌握不够


##第一问
class teacher(object):
    school = '广州软件学院'
    def __init__(self,job_number,name,age,department,phone,entry_time):
        self.job_number = job_number
        self.name = name
        self.age = age
        self.department = department
        self.phone = phone
        self.entry_time = entry_time

    def output(self):
        print('''   %s的个人信息如下:
*********************
工号:%s
年龄:%s
部门:%s
电话:%s
入职时间:%s
*********************''' % (self.name,self.job_number,self.age,self.department,self.phone,self.entry_time)  )

    def __del__(self):
        ## 析构函数
        print('{}成员空间释放了'.format(self.name))

    def getsalary(self,base_salary):
        # 基本薪金 = 基础薪金 + 年功薪金(每满1年增长100元,10年封顶)
        import time
        current_date = time.strftime('%Y.%m',time.localtime())
        t1 = self.entry_time.split('.')   #入职时间
        t2 = current_date.split('.')      #当前时间
        if int(t2[0]) >= int(t1[0]):
            year = int( t2[0]  ) - int( t1[0] )
        else:
            year = int(t2[0]) - int(t1[0]) - 1
        current_salary = base_salary + year * 100
        print( '{} 的基本薪金是:{} 元'.format(self.name,current_salary) )


obj =teacher('1001','张三',26,'软件工程系','13925348721','2019.06')
obj.output()

## 第二问
zhangsan =teacher('1001','张三',26,'软件工程系','13925348721','2019.06')
lisi =teacher('1201','李四',29,'网络技术系','13926172345','2017.10')
wangwu =teacher('1154','王五',30,'数码媒体系','13921783471','2021.05')
zhangsan.output()
lisi.output()
wangwu.output()

## 第三问
zhaoliu = teacher('1157','赵六',34,'软件工程系','13811073452','2015.04')
zhaoliu.getsalary(base_salary=5250)


  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7516973
  • 这篇博客也不错, 你可以看下Python数据分析实战【二】:用Python对不同的商品销售数据进行预测分析【文末源码地址】
  • 你还可以看下python参考手册中的 python- 序列和其他类型的比较
  • 除此之外, 这篇博客: python二级试卷中超级基础但是超级易错的题目中的 第一题 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 11.执行以下程序,输入”93python22”,输出结果是:
    
    w = input('请输入数字和字母构成的字符串:')
    for x in w:
        if '0'<= x <= '9':
            continue
        else:
            w.replace(x,'')
    print(w)
    
    A python9322
    B python
    C 93python22
    D 9322
    正确答案: C 
    
    
    这题的关键点在于replace替换字符串之后需要用w来接收,不能用别的字母来接收,
    因为他还在循环内,还需要接着替换别的。所以这个没有接收的就相当于什么操作都
    没有进行,自然输入的是什么输出的也就是什么啦。
    
  • 您还可以看一下 CSDN就业班老师的【Python全栈】第十六周 Python数据挖掘与机器学习进阶(上)课程中的 基尼系数小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    针对Python基础和类的设计的学习资源推荐:

    1.官方文档:Python官方文档详细且完整地介绍了Python语言的基础知识和面向对象编程的基本概念,是入门学习的不错选择。

    2.《Python入门指南》:陈儒的这本书不仅涵盖了Python基础知识(语法、数据类型、函数等),还介绍了Python面向对象设计的概念和实现方式。

    3.《Fluent Python》:对于有一定基础的Python开发者来说,这本书非常实用。它介绍了Python高级特性、面向对象设计、元编程等内容,并提供了大量代码示例和实用技巧。

    针对第一问和第二问的解答:

    第一问:该程序是一个猜姓名的小游戏,用户输入一个姓名,程序通过构造一个查找表(即字典)来判断输入是否为某个名人的姓名。如果是,则提示用户猜对了并询问是否继续游戏;如果不是,则根据输入的字符与字典进行比对,提示用户还差几个字符猜中该名人的姓名。具体的实现涉及到倒计时、构造字典、字符串遍历与比对等操作。

    第二问:该程序是一个猜单词游戏,程序根据一个字符串构造一个英语单词字典,用户输入一个单词,程序通过比对字典来判断用户输入是否为英文单词。如果是,则提示用户猜对了并询问是否继续游戏;如果不是,则根据输入的字符与字典进行比对,提示用户还差几个字符猜中该单词。具体的实现涉及到字符串的分词、构造字典、遍历字典树等操作。

    针对第一问和第二问的具体解决方案:

    1. 猜姓名游戏程序设计方案:

    a. 构造包含所有名人姓名的set对象(例如:stars)

    b. 定义构造字典的函数build_lookup_table,利用循环嵌套构造字典(用字典实现一个又称为字典树的数据结构),其中字典的键为字符,字典的值为下一级字典的引用。具体实现方法是,对于字典中的每个字符,检查其是否在lookup_table_中,如果不在,则添加该字符为新的键和一个新的空字典作为新的值,否则停留在该字符下一级的字典中继续匹配。

    c. 定义用户提示信息的字典messages,包含不同等级的提示信息,以及猜中名人姓名时的特殊提示信息。

    d. 定义倒计时函数countdown,循环输出指定秒数并暂停1秒。

    e. 使用以上函数和变量编写主函数guess_name,在其中设置一个输入循环,提示用户输入姓名,然后依次检查输入的每个字符,从字典中检索是否存在该字符对应的字典。如果存在,则继续向下检索,匹配下一级字典中的字符,否则退出循环并输出相应等级的提示信息。

    f. 对于输入正确的情况,输出特殊提示信息以及继续游戏/退出游戏的提示信息。

    1. 猜单词游戏程序设计方案:

    a. 定义分词函数cut,以一个需要被分词的字符串作为参数,将其拆分成单词,并将结果保存在一个集合类型的变量中返回。

    b. 定义构造字典树的函数build_trie,依次遍历分词结果,匹配每个单词中的每个字符,对于字典中的每个字符,检查其是否在trie中,如果不在,则添加该字符为新的键和一个新的空字典作为新的值,否则停留在该字符下一级的字典中继续匹配。

    c. 定义用户提示信息的字典messages,与猜姓名游戏的实现方案相同。

    d. 编写主函数guess_words,在其中设置一个输入循环,提示用户输入单词,然后依次检查输入的每个字符,从字典中检索是否存在该字符对应的字典。如果存在,则继续向下检索,匹配下一级字典中的字符,否则退出循环并输出相应等级的提示信息。

    e. 对于输入正确的情况,输出特殊提示信息以及继续游戏/退出游戏的提示信息。

    参考代码如下: