一小时学会Python基础练习的十四个练手题

2023-05-16

目录

    • 1到100的加法
    • 搬家具
    • 办公室人员分配
    • 猜拳游戏
    • 乘公交车
    • 吃苹果
    • 九九乘法表
    • 烤地瓜
    • 奇偶100内相加
    • 三角形
    • 正方形
    • 文件备份
    • 学员管理系统(函数版)
    • 学员管理系统(面向对象版)
      • main
      • mangerSystem
      • student

1到100的加法

i = 1 
result = 0
while i <= 100:
    result += i
    i += 1
print(result)

搬家具

class Furniture():
    
    def __init__(self,name,area):
        self.name = name
        self.area = area

class Home():

    def __init__(self,address,area):

        self.address = address

        self.area = area
        
        self.free_area = area
        
        self.furniture = []

    def __str__(self):
        
        return f"房子地理位置{self.address},房屋面积是{self.area},剩余面积{self.free_area},家具有{self.furniture}"

    def add_furniture(self,item):

        if self.free_area >= item.area:

            self.furniture.append(item.name)

            self.free_area -= item.area

        else:
            print('无法容纳更多的家具')


F1 = Furniture('沙发',10)
F2 = Furniture('双人床',30)

addHome = Home('上海',2000)

addHome.add_furniture(F1)

print(addHome)
addHome.add_furniture(F2)

print(addHome)

办公室人员分配

offices = [[],[],[]]
teachers =["李老师","王老师","牛老师","黄老师","庄老师","陈老师","毕老师","何老师"]

import random

for name in teachers: # 先挑选老师
    num = random.randint(0,2)
    offices[num].append(name) # 随机选取教室,将老师安排进去

i = 1 
for office in offices:
    print(f'第{i}办公室,人数为{len(office)}') # 读出进入到教室的老师
    for name in office:
        print(f'{name} ',end='')
    print()
    print()
    i += 1


猜拳游戏

import random

while True:
    player = int(float(input("请输入数字-1.剪刀、2.石头、3.布:")))
    computer = random.randint(1,3)

    if (player == 1) and (computer == 2) or (player == 2) and (computer == 1) or (player == 3) and (computer == 1):
        print("玩家获胜")
    elif player == computer:
        print("平局")
    else:
        print("电脑获胜")


乘公交车

money = 1 # 用1和0表示有或没有
seat = 1

if money == 1:
    print('请上车')
    if seat == 1:
        print('请坐下')
    else:
        print('无座')
else:
    print('请步行')

吃苹果

i = 0
while i < 5:
    if i == 3:
        print('我已经吃饱了')
        break # 条件生效后,直接中断这次的循 (中断)
    i += 1
print(f'吃完{i}个苹果,饱了')



j = 1
while j < 5:
    if j == 3:
        print(f'第{j}个有虫子')
        j += 1
        continue # 迭代 跳出这个循环
    print(f'一共吃了{j}个苹果')
    j += 1
print('吃完这些苹果')

九九乘法表

i = 1
while i<=9:
    j = 1
    while j <= i:
        print(f"  {i}*{j}={i*j}",end="")
        j += 1
    print()
    i += 1

烤地瓜

class SweetPotato():

    def __init__(self):

        self.cook_time = 0
        self.cook_state = '生的'
        self.condiments = []

    def cook(self,time):
        
        self.cook_time += time

        if 0<= self.cook_time <3:
            self.cook_state = '生的'

        elif 3<= self.cook_time <6:
            self.cook_state = '半生'

        elif 6<= self.cook_time <8:
            self.cook_state = '全熟'

        elif 8<= self.cook_time :
            self.cook_state = '烤糊'

    def add_condiments(self,condiment):

        self.condiments.append(condiment)

    def __str__(self):
        return f"这个地瓜烤了{self.cook_time}分钟,状态是{self.cook_state},调料{self.condiments}"


if __name__ == "__main__":

    CookingDiGua = SweetPotato()
    print(CookingDiGua)


    CookingDiGua.cook(1)
    CookingDiGua.add_condiments("盐巴")
    print(CookingDiGua)


    CookingDiGua.cook(2)
    CookingDiGua.add_condiments("酱油")
    print(CookingDiGua)


    CookingDiGua.cook(3)
    print(CookingDiGua)

奇偶100内相加

i = 1
result = 0
while i <= 100:
    if i % 2 == 0:
        result += i
    i += 1
print(result)

j = 0 
result = 0
while j <= 100:
    result += j
    j += 2
print(result)


三角形

j = 0
while j < 5:
    i = 0
    while i < j:
        print('*',end="")
        i += 1
    print()
    j += 1

正方形

j = 0
while j <4:
    i = 0
    while i <7:
        print('*',end="")
        i += 1
    print()
    j += 1

文件备份

old_file = input('请输入您需要的备份文件名:')

index = old_file.rfind('.')

new_file = old_file[:index] + '[备份]' + old_file[index:]

print(new_file)

old_f = open(old_file,'rb')
new_f = open(new_file,'wb')

while True:
    con = old_f.read(1024)
    if len(con) == 0:
        break
    new_f.write(con)

old_f.close()
new_f.close()   

学员管理系统(函数版)

info = []

def print_info():
    print('-' * 20)
    print('1.添加学员')
    print('2.删除学员')
    print('3.修改学员')
    print('4.查询学员')
    print('5.所有学员')
    print('6.退出系统')
    print('-' * 20)



def add_info():
    new_id = input("请输入ID:")
    new_name = input("请输入姓名:")
    new_tel = input("请输入Tel:")

    global info
    for i in info:
        if new_id == i['name']:
            print("用户存在")
            return
        info_dict = {}
        info_dict["id"] = new_id
        info_dict["name"] = new_name
        info_dict["tel"] = new_tel

        info.append(info_dict)
        print(info)


def del_info():

    del_name = input('输入删除姓名:')

    global info
    for i in info:
        if del_name == i['name']:
            info.remove(i)
            print('删除成功')
            break
    else:
        print('不存在该学员')

    print(info)


def modify_info():

    modify_name = input('输入修改姓名:')

    for i in info:
        if modify_info == i['name']:
            i['tel'] = input('输入修改的TEL:') 
            break
    else:
        print("学员不存在")


def search_info():

    search_name = input('输入姓名:')    
    for i in info:      
        if search_name == i["name"]:
            print('---查找到一下学员信息-----')
            print(f'学员姓名/t{i["name"]}/t电话{i["tel"]}/t学员号{i["id"]}')
            break
    else:
        print('学员不存在')
    print(info)

def all_info():
    print("学号/t姓名/t手机号")
    global info
    for i in info:
        print(f'{i["id"]}/t{i["name"]}/t{i["tel"]}')



while True:
    print_info()

    User_num = int(float(input("请输入需要执行的功能:")))

    if User_num == 1:
        add_info()
    elif User_num == 2:
        del_info()
    elif User_num  == 3:
        modify_info()
    elif User_num  == 4:
        search_info()
    elif User_num  == 5:
        all_info()
    elif User_num  == 6:
        exit_flag = input('退出系统 yes or no:')
        if exit_flag == "yes":
            break
    else:
        print('操作粗错误')


学员管理系统(面向对象版)

main

from mangerSystem import*

if __name__ == '__main__':

    student_manager = StudentManager()

    student_manager.run()

mangerSystem

from student import*

class StudentManager(object):
    def __init__(self):
        self.student_list = []

    def run(self):
        while True:
            self.show_menu()

            menu_num = int(float(input("请输入功能序列号:")))

            if   menu_num == 1:
            
                self.add_student()
            elif menu_num ==2: 
                self.del_student()

            elif menu_num ==3: 
                self.modify_student()

            elif menu_num ==4: 
                self.search_student()

            elif menu_num ==5: 
                self.show_student()

            elif menu_num ==6: 
                self.save_student()

            elif menu_num ==7: 
                break

            else:
                print("您输入错误")

    @staticmethod
    def show_menu():
        print("————请输入以下序列功能—————")

        print('——1.添加')            
        print('——2.删除')            
        print('——3.修改')            
        print('——4.查询')            
        print('——5.所有')            
        print('——6.保存')            
        print('——7.退出')

        print("—————————————————————————")
    
    
    
    def add_info(self):
        new_name = input('请输入姓名:')
        new_id = input('请输入ID:')
        new_tel = input('请输入电话:')

        for i in self.student_list:
            if (i.name == new_name) and (i.id == new_id) and (i.tel == new_tel):
                print("学员存在")
                return

        student = Student(name,id,tel)
        self.student_list.append(student)

        print(self.student_list)
        print(student)

    def del_student(self):

        del_name = input("请输入删除的姓名:")

        for i in self.student_list:
            if i.name == del_name:
                self.student_list.remove(i)
                break
        else:
            print('查无此人!')

        print(self.student_list)

    def modify_student(self):

        modify_name = input('请输入修改的姓名:')

        for i in self.student_list:
            if i.name == modify_name:
                i.name = input("输入新名字")
                i.gender = input('输入性别')
                i.tel = input('输入新手机号')
                print(f'修改学员信息成功,姓名{i.name},性别{i.gender},手机号{i.tel}')
                break
            else:
                print('查无此人')

    def search_student(self):

        search_name = input("请输入查询的姓名")

        for i in self.student_list:
            if i.name == search_name:
                print(f'学员名字:{i.name},性别:{i.gender},手机号:{i.tel}')
            else:
                print('查无此人')

    def show_student(self):

        print('姓名\t性别\t手机号')

        for i in self.student_list:
            print(f'{i.name}\t{i.gender}\t{i.tel}')

    def save_student(self):
        f = open('student.data','w')

        new_list = [i.__dict__ for i in self.student_list]
        
        print(new_list)

        f.write(str(new_list))

        f.close()
    
    def load_info(self):

        try:
            f = open('student.data','r')

        except:
            f = open('student.data','w')

        else:

            data = f.read()

            new_list = eval(data)

            self.student_list = [student(i['name'],i['id'],i['tel']) for i in new_list]

        finally:

            f.close()



student

class Student(object):
    def __init__(self,name,gender,tel):
        self.name = name
        self.gender = gender
        self.tel = tel

    def __ste__(self):
        return f'{self.name},{self.gender},{self.tel}'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一小时学会Python基础练习的十四个练手题 的相关文章

  • OSPF详解(5种包和状态机)

    1 OSPF的数据包 xff08 5种 xff09 Hello xff1a 发现建立并周期保护邻居关系 DBD xff1a 数据库描述包 进行主从关系的选举 xff0c 最重要的作用是发送LSDB目录 LSR xff1a 链路状态请求 对收
  • BGP—origin属性的应用

    BGP origin属性 1 origin 是公认必遵属性 公认必遵 xff1a 只要不人为修改 xff0c 该属性就不会自己改变 origin属性描述该路由是如何成为BGP路由的 符号作用i通过network生成的BGP路由 xff1f
  • MPLS-虚拟专用网 实验(分支之间可以互通)

    1 MPLS V P N实验 xff08 分支之间可以互通 xff09 实验要求 xff1a 1 A1和A2可以通过MPLS V P N打通 xff0c B1和B2可以打通 xff0c A不能访问B 2 R2为ISP 3 R6可以telne
  • vmware ESXi中安装windows11(解决VMware安装Windows11报错+win11跳过联网操作)

    文章目录 vmware ESxi 安装windows111 安装步骤2 Vmware安装win11报错解决方案2 1 问题产生原因 xff1a 2 2 解决方案 xff1a 3 Windows11安装过程中跳过联网操作 xff08 在无法连
  • python 修改ip地址

    安装包 pip install wmi pip install pywin32 实现 import wmi Obtain network adaptors configurations nic configs 61 wmi WMI Win3
  • Postman前置脚本-全局变量和环境变量

    全局变量和环境变量 61 61 全局变量和环境变量 61 61 Postman 请求前置脚本时间戳案例工作原理 全局变量和环境变量 全局变量 概念 xff1a 在 Postman 全局生效的变量 xff0c 全局唯一 设置 xff1a 代码
  • kubernetes❀集群环境搭建

    kubernetes 集群环境搭建 2 kubernetes集群环境搭建2 1 前置知识点2 2 kubeadm 部署方式介绍2 3 安装要求2 4 最终目标2 5 准备环境2 6 环境初始化2 6 1 检查操作系统的版本2 6 2 主机名
  • kubernetes❀资源管理

    kubernetes 资源管理 3 资源管理3 1 资源管理介绍3 2 YAML语言介绍3 3 资源管理方式3 3 1 命令式对象管理3 3 2 命令式对象配置3 3 3 声明式对象配置 3 资源管理 3 1 资源管理介绍 在kuberne
  • Kubernetes❀实战入门

    Kubernetes 实战入门 4 实战入门4 1 Namespace4 1 1 查看 4 1 2 创建 4 1 3 删除 4 1 4 配置方式 4 2 Pod4 2 1 创建并运行4 2 2 查看pod信息4 2 3 访问Pod4 2 4
  • Qt重定向问题

    概念 在我们使用软件时大多使用release版本 xff0c 这样在使用过程中的调试信息就不会显示出来 xff0c 为了将调试信息打印在界面上或者放在文件中保存起来我们就可以使用重定向的技术 在QT的帮助文档 xff1a qInstallM
  • VSUDP通信

    好久没弄VS的UDP通信了 xff0c 使用方式都忘记的差不多了 今天遇到了正好学习一下 UDP理论 xff1a UDP参考链接 xff1a socket函数 为了执行网络输入输出 xff0c 一个进程必须做的第一件事就是调用socket函
  • sockaddr_in结构体的说明(成员:sin_family、sin_addr、sin_zero)

    sockaddr in是系统封装的一个结构体 xff0c 具体包含了成员变量 xff1a sin family sin addr sin zero 这个结构体被封装在ws2def h中 xff0c 具体的代码如下 xff1a typedef
  • 字节、位与二进制表示

    前言 仅针对JAVA xff0c 总结几个知识点 字节与位 1字节 xff08 byte xff09 61 8位 xff08 bit xff09 每个bit位非0即1 xff0c 即二进制表达中的0或1 xff0c 0001中每个 0 和
  • windows配置tensorflow python object detection 环境

    option 1 pip install lt binary gt pip install upgrade https storage googleapis com tensorflow mac cpu tensorflow 1 12 0
  • 顺序表递增有序,插入元素x后仍递增有序

    思想 xff1a 1 xff09 先找到x元素的插入位置 xff08 顺序表从左到右依次比较 xff0c 若A元素大于x元素 xff0c 那么x元素插入的位置就是A元素所在的位置 xff09 2 xff09 将A元素所在的位置的元素以及它之
  • 猜数游戏,系统想一个数,我们来猜

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 输入多个数(输入-1为结束标志),计算这多个数的平均数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 计算n的阶乘

    在 include span class token operator lt span stdio span class token punctuation span h span class token operator gt span
  • 判断一个数是否是素数

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • HTTP报文是什么

    x1f4e2 x1f4e2 如果说http是因特网的信使 xff0c 那么http报文就是他用来送信的包裹了 1 x1f4da 什么是报文 在度娘的介绍中 x1f4e3 报文 message 是网络中交换与传输的数据单元 xff0c 即站点

随机推荐

  • STM32串口接收数据处理方法

    STM32串口接收数据处理方法 STM32串口接收定长数据处理方法 STM32串口接收定长数据的处理方法非常简单 xff0c 我目前做项目都是用的这个 xff0c 也可用做处理MODBUS协议 xff0c 直接上代码 span class
  • VScode常用命令

    VScode 的常用快捷键和插件 一 VScode 的常用快捷键 1 注释 xff1a a 单行注释 xff1a ctrl 43 k ctrl 43 c 或 ctrl 43 b 取消单行注释 xff1a ctrl 43 k ctrl 43
  • 彻底搞懂线程、进程、多线程、多进程和多任务的关系

    首先 xff0c 从定义开始 xff0c 先看一下教科书上 进程和线程定义 xff1a 进程 xff1a 资源分配的最小单位 线程 xff1a 程序执行的最小单位 心中默念 xff0c 啥啥啥 xff0c 写的这是啥 1 进程 进程是程序执
  • vmware-workstation-and-device-credential-guard-are-not-compatible

    1 off hyper v feature 2 bcdedit set hypervisorlaunchtype off
  • Ubuntu下配置Multipath TCP(MPTCP)By内核下载(一)

    一 MPTCP介绍 多路径TCP xff08 MPTCP xff09 是一种通过修改TCP来实现同时使用多个IP地址 接口方法 xff0c MPTCP向应用程序提供常规的TCP接口 xff0c 同时实际上跨多个子流传播数据 这样做的好处包括
  • 解决Ubuntu20.04插入英伟达计算卡后无法开机问题-Ubuntu双显卡切换

    解决Ubuntu20 04插入英伟达计算卡后无法开机问题 Ubuntu双显卡切换 问题详述问题分析问题解决 ubuntu双显卡切换 问题详述 本人新配了一台个人使用的机器学习服务器 对环境配置可能有影响的硬件如下 xff1a 华硕B660M
  • python PyQt5使用QT designer不显示问题

    初学Pyqt5记录走过 的坑 xff01 1 窗口自适应 xff1a 窗口自适应我的理解就是使用栅格布局 xff0c 调整后会根据窗口大小调整比例 先把自己需要的截面放在UI上 xff0c 然后使用栅格布局即按Ctrl 43 r即可预览 x
  • opencv跑yolo报错Failed to parse NetParameter file

    64 TOC cv2 error OpenCV 3 4 5 opencv 3 4 5 modules dnn src darknet darknet importer cpp 214 error 212 Parsing error Fail
  • Java自学

    JAVA自学 一 需要掌握的知识点二 资源中心 教程 练习 三 工作要求 图片 一 需要掌握的知识点 java基础 xff08 多线程 IO xff08 nio xff0c bio xff0c aio xff09 xff09 各种数据结构
  • python解析DataMatrix Code二维码

    span class token comment 安装 span span class token triple quoted string string 39 39 39 sudo apt get install libdmtx0a pi
  • SpringBoot中使用自定义异常Exception

    记录一下SpringBoot中使用自定义异常操作方法 代码如下 创建ServiceException class span class token keyword public span span class token keyword c
  • kafka的安装与使用(一)

    kafka的安装与使用 xff08 一 xff09 最近接触消息中间件 xff0c 把使用过程中记录一下 xff01 1 下载与安装 任何文档都要以官方文档为准 xff0c 英文多看两眼你会发现比上次更加熟悉了 xffe3 xffe3 xf
  • 【GITEE】解决 Push rejected

    问题背景 xff1a 更新了台式电脑后 xff0c 从gitlee上拉了代码 xff0c 重新push后就一直报错 xff1a Push single to origin single was rejected by remote 问题解决
  • 一小时学会Python3爬虫基础(二)基础语法 输入输出 关键字 注释

    目录 前言集成环境 编辑器基本语法缩进换行标识符关键字注释输入 输出总结 前言 python作为一门编程语言 xff0c 也跟其他语言一样有自己的逻辑语法 xff0c 那什么是语法 xff1f 跟人一样每个人都有自己说话一套方法 集成环境
  • windows 生成self-sign证书

    打开powershell 管理员身份运行 New SelfSignedCertificate CertStoreLocation Cert LocalMachine My DnsName 34 mysite local 34 Friendl
  • 一小时学会Python3爬虫基础(四)完整解析格式化输出和数据类型转换

    目录 前言格式化输出格式化符号 s格式化函数format格式化表示 f string 转义符和结束符 n意思就是 换行 new line t 叫做水平制表符 tab xff0c r 是回车符carriage return结束符 数据类型转换
  • 一小时学会Python3爬虫基础(七)高级数据的全部操作:字典

    目录 前言字典1 字典格式2 创建有效字典2 创建空字典3 字典类型转换 字典增加和修改1 增加2 修改 字典查找1 key键查找2 get 3 keys 4 values 5 items 字典循环遍历1 遍历字典的key值2 遍历字典的v
  • Python处理异常代码的基本操作,原来都大同小异!

    目录 什么是异常 xff1f 如何捕获异常 xff1f 1 异常的写法2 捕获指定异常3 捕获多个异常4 捕获异常的描述5 捕获所有异常6 异常的else7 finally8 自定义异常模块9 异常传递思路 总结 什么是异常 xff1f 简
  • python的模块与包的关系

    模块和包的概念 python中的模块 xff0c 其实就是一个python的文件 xff0c 包含了很多类和函数 xff0c 基本上都是可以向外调用的 xff0c 或者整个文件都用来处理某个操作 xff0c 我们使用库和框架就是由模块和包构
  • 一小时学会Python基础练习的十四个练手题

    目录 1到100的加法搬家具办公室人员分配猜拳游戏乘公交车吃苹果九九乘法表烤地瓜奇偶100内相加三角形正方形文件备份学员管理系统 xff08 函数版 xff09 学员管理系统 xff08 面向对象版 xff09 mainmangerSyst