【python二级-练习题】

2023-11-08

python江湖


1、求长方形面积

题目描述:

编写代码实现从键盘输入两个浮点数计算以这两个浮点数为边长的长方形的面积,显示在控制台,数据长度为10,不足部分用 - 补齐,保留2位小数。

代码如下:

方法一:

# -*- coding = utf-8 -*-
# @Time : 2022/6/15 19:20
# @Author : lxw_pro
# @File : python二级练习.py
# @Software : PyCharm
a = float(input("请输入长方形的长度:"))
b = float(input("请输入长方形的宽度:"))
S = a*b
print("长方形的面积是:{:->10.2f}".format(S))

方法二:

a, b = input().split(',')
print("{:->10.2f}".format(float(a)*float(b)))

方法三:

def mj(a, b):
    S = a*b
    return S


c = float(input())
k = float(input())
print("{:->10.2f}".format(mj(c, k)))

2、随机密码验证

题目描述:

利用random随机库里的函数,生成一个由四个大小写字母组成的验证码,显示在控制台,然后让用户输入验证码进行验证,不区分大小写,输入正确提示验证成功,错误提示验证失败!

代码如下:

方法一:

import random

sj = ''
for i in range(2):
    zimu = chr(random.randint(65, 90)) + chr(random.randint(97, 122))
    sj = sj + zimu
print(sj)
user_input = input()
# 把验证码和用户输入的字符全部变成小写或大写,然后对比
if user_input.upper() == sj.upper():
    print("验证码正确")
else:
    print("验证码错误,请重新输入")

方法二:

import random, string

s = string.ascii_letters
# 大写string.ascii_uppercase
# 小写string.ascii_lowercase
a = ''
for i in range(4):
    r = random.choice(s)
    # print(r, end='')
    a += r
print(a)

sr = input()
if sr.lower() == a.lower():
    print("验证正确")
else:
    print("验证失败")

3、信息分配表(字典)

题目描述:

定义了一个拥有4个元素的字典Infor,用姓名作为字典的key,用部门和工资组成的列表作为字典的value,将每个人的部门和工资显示在控制台,例如:张三的工资是:5500,部门是:人力部;筛选出工资最高的员工,将其姓名和工资打印到控制台,例如:工资最高的员工是张三,其工资为5800。

代码如下:

方法一:

members = {'张三': ['人力部', 5500], '雨生': ['后勤部', 4500], '蛮全': ['市场部',6500], '伟哥': ['开发部', 8500]}
zd = {}
for key in members:
    print(f'{key}的工资是:{members[key][1]}, 部门是{members[key][0]}')
for values in members.values():
    zd[values[1]] = values[0]
max_val = max(zd.keys())
max_name = zd[max_val]
print(f'工资最高的部门是:{max_name},该部门工资是:{max_val}')

4、全模式分词(jieba)

题目描述:

从data.txt文件读入一篇文章,用jieba库的函数cut的全模式做分词,统计词汇长度为2的词出现的次数,输出出现次数最多的前10个词汇及其出现次数。

代码如下:

提示:data.txt文件可以随便找一篇文章复制粘贴即可

import jieba
er = {}
with open('data.txt', 'r', encoding="utf-8") as f:
    h = f.readlines()
for i in h:
    q = jieba.lcut(i, cut_all=True)
    for j in q:
        if len(j) == 2:
            if j in er:
                er[j] += 1
            else:
                er[j] = 1
dp = list(er.items())
dp.sort(key=lambda x: int(x[1]), reverse=True)
for i in range(10):
   print(f"{dp[i][0]}:{dp[i][1]}")

5、数字金字塔

题目描述:

使用循环按示例要求输出10行内容,打印到控制台:

请添加图片描述

代码如下:

方法一:

import math
a = 0
b = 10
for i in range(b):
    c = b - i
    a += pow(10, i)
    for j in range(c):
        print(' ', end='')
    print(pow(a, 2))

方法二:

import math

n, m, z = 10, 0, ' '
for i in range(n):
    a = n - i
    # print(a)
    m += pow(10, i)
    # print(m)
    print(z*a, pow(m, 2))

6、求最大值、最小值及平均值

题目描述:

定义一个函数,传入n个参数,然后通过字典的方式返回n个数的最大值、最小值和平均值,例如:{“max”:最大值,“min”:最小值,“average”:平均值},(思路:要使用到可变参数)

代码如下:

import math
def zd(n):
    n = list(n)
    da = max(n)
    xx = min(n)
    aa = sum(n)/len(n)
    return da, xx, aa


n = [13, 14, 15, 9, 20, 52]
a = list(zd(n))
# fh = {f"“max”:{a[0]}, “min”:{a[1]}, “average”:{a[2]}"}
# print(fh)
pa = {}
pa['max'] = a[0]
pa['min'] = a[1]
pa['average'] = a[2]
print(pa)

7、交换变量

题目描述:

已知变量a的值为100,变量b的值为200,请编写代码实现将a和b的值进行交换,并在控制台打印出来。

代码如下:

方法一:

a, b = 100, 200
a, b = b, a
print(a, b)

方法二:

a, b = 100, 200
h = a
a = b
b = h
print(a, b)

def jh(a, b):
    t = a
    a = b
    b = t
    print(a, b)


a, b = 100, 200
jh(a, b)

方法三:

a, b = 100, 200
a = a + b  
b = a - b
a = a - b
print(a, b)

方法四:

a, b = 100, 200
a = a ^ b
b = a ^ b  # b = (a^b)^b = a
a = a ^ b  # a = (a^b)^a = b
print(a, b)

def demo(a,b):
    a = a ^ b
    b = a ^ b  # b = (a^b)^b = a
    a = a ^ b  # a = (a^b)^a = b
    print(a, b)


a, b = 100, 200
demo(a, b)

8、输入密码-三次机会

题目描述:

给用户三次输入用户名和密码的机会,要求如下:如输入第一行输入用户名为 ‘张三’,第二行输入密码为 ‘666666’,输出
‘登录成功!’,退出程序;当输入密码错误时提示“密码错误,请重新输入!”;当 3 次输入用户名或密码都不正确输出 “您已经输错密码超过3次,请明天再试!。”

代码如下:

方法一:

for i in range(3):
  a, b = input(), input()
  if a=="张三" and b=="666666":
    print("登录成功!")
    break
else:
  print("您已经输错密码超过3次,请明天再试!")

方法二:

count = 3
for i in range(3):
    name = input("请输入用户名:")
    pw = int(input("请输入用户密码:"))
    if name == '张三' and pw == 666666:
        print('登录成功')
        break
    else:
        count = count-1
        print('密码不对,请重新输入,还有', count, '次机会')
else:
    print('您已经输错密码超过3次,请明天再试!')

方法三:

i = 3
while True:
  name = input("输入名字:")
  word = int(input("输入密码:"))
  if name == '张三' and word == 666666:
    print("登录成功")
    break
  else:
    i -= 1
    if i == 0:
      print("您已经输错密码超过3次,请明天再试!")
      break

方法四:

cs = 0
while 1:
    name = input("输入用户名:")
    mm = eval(input("输入密码:"))
    if name == "张三" and mm == 666666:
        print("登录成功!")
        break
    else:
        cs += 1
        if cs == 3:
            print("您已经输错密码超过3次,请明天再试!")
            break

9、水仙花数

题目描述:

输出所有的水仙花数(水仙花数指的是:一个三位数等于其个位数的立方和,例如153 = 13 + 53 + 33)。

代码如下:

方法一:

for i in range(100, 1000):
  a = i % 10
  b = i % 100 // 10
  c = i // 100
  if a * a * a + b * b * b + c * c * c == i:
    print(i)

for n in range(100, 1000):
    i = n // 100
    j = n // 10 % 10
    k = n % 10
    if n == i ** 3 + j ** 3 + k ** 3:
      print(n)

方法二:

for a in range(1, 10):
    for b in range(10):
        for c in range(10):
            s1 = a*100+b*10+c
            s2 = pow(a, 3)+pow(b, 3)+pow(c, 3)
            if s1 == s2:
                print(s1)

for i in range(1, 10):
    for j in range(0, 10):
        for k in range(0, 10):
            if i ** 3 + j ** 3 + k ** 3 == i * 100 + j * 10 + k:
                print(i*100+j*10+k)

方法三:

for i in range(100, 1000):
    a1 = int(str(i)[0])
    a2 = int(str(i)[1])
    a3 = int(str(i)[2])
    if i == a1 ** 3 + a2 ** 3 + a3 ** 3:
        print(i)

for i in range(100, 1000):
    s = str(i)
    if int(s[0])**3+int(s[1])**3+int(s[2])**3 == i:
        print(s)

10、增加与去掉

题目描述:

本题要求在1行内以逗号间隔输入五菜一汤,菜单中有一个菜为“水煮肉片”,利用append和remove方法增加一个“东坡肉”,去掉一个“水煮肉片”,并输出修改后的菜单。

代码如下:

ct = input("请输入五菜一汤,并且用,隔开:").split(",")
ct.append("东坡肉")
ct.remove("水煮肉片")
print(ct)

11、添加通讯录信息

题目描述:

编程实现添加通讯录信息,定义自定dctInfo,将姓名作为字典的key,由电话、QQ、地址组成的子字典作为dctInfo的value,例如:{“张三”:
{“电话”: “1355555”, “QQ”: “3333”, “地址”:“贵州省……”},……}
要求使用for循环从控制台输入4个人的信息,保存字典dctInfo中,然后将dctInfo打印输出在控制台。

代码如下:

for i in range(4):
    dic = {}
    key = input()
    value = input().split(',')
    dic[key] = value
    print(dic)

字典知识忘记的话:可以点点 python字典学习链接


12、写入Python成绩

题目描述:

从D盘中读取“Python成绩.csv”,根据读取到的分数按照分数段将成绩修改为“优”(90分以上、含90分)、“良”(80-89,含80)、“中”(70-79,含70)、“及格”(60-69,含60)、“不及格”(60分一下)5个等次,并将最后的结果写入到D盘下的“Python成绩1.csv”中。

文件准备:

Python成绩.csv
在这里插入图片描述

代码如下:

import csv

file = open('Python成绩2.csv', mode='w', encoding='utf-8')
with open('Python成绩.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    for row in reader:
        if int(row['Python-score']) >= 90:
            row['Python-score'] = '优'
        elif 80 <= int(row['Python-score']) < 90:
            row['Python-score'] = '良'
        elif 70 <= int(row['Python-score']) < 80:
            row['Python-score'] = '中'
        elif 60 <= int(row['Python-score']) < 70:
            row['Python-score'] = '及格'
        else:
            row['Python-score'] = '不及格'
        print("name:", row['name'], file=file, end='\n')
        print("Python-score:", row['Python-score'], file=file, end='\n')
# f = open("Python成绩2.csv", mode="w")
# csv_writer = csv.writer(f)

file.close()
print("over!")
运行效果如下:

Python成绩2.csv
在这里插入图片描述
在这里插入图片描述


13、随机组名

题目描述:

从D盘中读取“姓氏.txt”,再从D盘中读取“汉字.txt”,随机抽取姓氏和汉子组成20个名字,并将名字保存到列表names中,最后将names打印输出到控制台。

文件准备:

姓氏.txt
请添加图片描述
汉字.txt
请添加图片描述

代码如下:

方法一:

# -*- coding = utf-8 -*-
# @Time : 2022/6/18 9:18
# @Author : lxw_pro
# @File : 随机组名.py
# @Software : PyCharm
import random

for i in range(20):
    with open('姓名.txt', 'r', encoding='utf-8') as f:
        x = f.read()

    with open('汉字.txt', 'r', encoding='utf-8') as h:
        m = h.read()

    x = list(x)
    # print(x)
    m = list(m)
    # print(m)
    random.shuffle(m)
    # print(m)
    string = ""

    for j in range(0, random.randint(1, 2)):
        string += random.choice(m)
        # print(string)
    x = random.choice(x)
    print(x+string)
f.close()
h.close()

[^1]当然了,这里运行的结果也是随机生成的

运行结果如下1:

请添加图片描述

方法二:

import random

def names():
    with open('姓名.txt', 'r', encoding='utf-8') as f:
        x = f.read()
        x = list(x)
    x = random.choice(x)
    with open('汉字.txt', 'r', encoding='utf-8') as h:
        m = h.read()
        m = list(m)
    f.close()
    h.close()
    m = ''.join(random.choice(m) for i in range(2))
    name = x + m
    return name


for i in range(20):
    print(names())
运行结果如下2:

在这里插入图片描述

import random

for j in range(20):
    with open('姓名.txt', 'r', encoding='utf-8') as f:
        x = f.read()
        x = list(x)
    x = random.choice(x)
    with open('汉字.txt', 'r', encoding='utf-8') as h:
        m = h.read()
        m = list(m)
    f.close()
    h.close()
    m = ''.join(random.choice(m) for i in range(2))
    name = x + m

    print(name)
运行效果如下3:

在这里插入图片描述


上一章链接:【MySQL~(详细)案例】


每日一言:

所谓一生活过几生,关键的问题不在长度而在宽度,勇敢地选择不一样的生活,多一次冒险,就多一次体验不同人生的机会。

有兴趣的话,可以扫一下公众号二维码关注一下,相互交流,相互学习,一起成长,一起进步。
520

持续更新中…

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

【python二级-练习题】 的相关文章

随机推荐

  • C#中变量的类型

    文章目录 值类型 引用类型 值类型与引用类型的区别 枚举类型 变量的作用域 值类型 C 中值类型的变量主要包括整数类型 浮点类型 decimal和bool类型等 值类型的变量都在堆栈中进行分配 因此效率很高 所以使用值类型的主要目的是为了提
  • (IDEA)创建Java类时,自动生成作者、时间和版本号注释;以及方法注释时,自动生成参数和返回值注释

    可恢复 IDEA 创建Java类时 自动生成作者 时间和版本号注释 以及方法注释时 自动生成参数和返回值注释 1 作者 时间和版本号注释 2 方法注释 自动生成方法中参数和返回值 IDEA 创建Java类时 自动生成作者 时间和版本号注释
  • 【iVX】颠覆常规,首个图形通用无代码编程平台诞生

    个人主页 个人主页 新人博主 喜欢就关注一下呗 文章目录 关于传统 低代码平台 我的看法 低代码平台的 局限性 传统的 低代码平台 存在以下一些缺点 关于iVX 为什么选择iVX 1 可视化的操作自动生成 全栈代码 2 超强的代码能力 3
  • Linux I2C 驱动实验

    目录 Linux I2C 驱动框架简介 I2C 总线驱动 I2C 设备驱动 I2C 设备和驱动匹配过程 I MX6U 的I2C 适配器驱动分析 I2C 设备驱动编写流程 I2C 设备信息描述 I2C 设备数据收发处理流程 硬件原理图分析 实
  • 计算机操作系统知识架构整理

    计算机操作系统 操作系统引论 操作系统的目标与应用 操作系统的目标 操作系统的作用 推动操作系统发展的主要动力 操作系统的发展过程 无操作系统的计算机系统 单道批处理系统 多道批处理系统 分时系统 实时系统 微机操作系统的发展 操作系统的基
  • 【剑指offer】数据结构——队列 栈 堆

    目录 数据结构 树 剑指offer 09 用两个栈实现队列 剑指offer 30 包含min函数的栈 剑指offer 31 栈的压入 弹出序列 剑指offer 41 数据流中的中位数 剑指offer 59 2 队列的最大值 数据结构 树 剑
  • Ubuntu 20.04安装搜狗输入法无法输入中文

    根据搜狗输入法官网进行安装后 无法输入中文 这是由于缺少所需要的依赖 sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml module qtquick2 sudo
  • 小白安装python+cuda+pytorh(gpu版本)

    首先说一下 安装前你需要自行安装anaconda和pycharm环境 推荐使用清华镜像安装anaconda https mirrors tuna tsinghua edu cn anaconda archive 第1步cuda下载 CUDA
  • node事件循环

    一 什么是事件循环 首先 node js的事件循环与JavaScript的略有不同 node中事件循环使node js可以通过将操作转移到系统内核中来执行非阻塞 I O操作 由于大多数现代内核都是多线程的 因此它们可以处理在后台执行的多个操
  • css3动画详解

    动画属性详解 1 transform 变形 动画的实际效果 a C3中支持操作 1 旋转 rotate 2 扭曲 skew 3 缩放 scale 4 移动 translate 5 矩阵变形 matrix b 使用介绍 rotate 旋转 1
  • 安装Msys2+pacman+mingw

    Msys2是在windows下提供的模拟GNU操作系统的环境 我觉得主要提供了一种模拟Linux操作的命令行环境 pacman是Msys2下的一个程序 我觉得类似CentOS下的yum ubuntu下的apt mingw按照我的理解 也是一
  • Ant Design Vue 之a-tab单元格编辑

    前言 最近遇到一个需求 要求表格中某一属性是可以单独改变的 看了 Ant Design Vue 的官方组件 发现不太灵活 所以自己动手写了一下 官方实现 先看一下官方demo演示效果 发现只能整行编辑 不能单独针对某个属性进行单独编辑 例如
  • 若依框架——前后端分离版

    目录 一 若依是什么 二 为什么使用若依 三 运行若依框架 四 若依的权限系统 1 菜单权限 1 创建菜单 2 创建角色分配权限 3 创建用户 2 按钮权限 3 接口权限 4 数据权限 四 其他系统管理 1 字典管理 1 添加字典类型 2
  • Proteus元器件介绍

    一直更新 各元器件使用说明 数码管 排阻 resistor network respack 数码管 这个需要主义的就是7SEG COM AN XXX 这里的COM AN是共阳极的意思 下面的COM CAT是共阴极 排阻 resistor n
  • js中宏任务与微任务

    js是一门单线程语言 在执行代码的过程中 程序也分同步任务与异步任务 而异步任务中分为宏任务与微任务 分类 宏任务 ajax setTimeout setInterval DOM监听 UI Rendering等 微任务 Promise的th
  • 基于Qt的收银点餐系统之UI的基本实现(二)

    在上一篇文章中 主要是从宏观上去探讨Qt中UI的实现方案 这一篇文章 将给出具体的代码 实现结果 一 实现思路 上一篇文章讲到 布局工作的特点为 区域划分 层层嵌套 同时整个布局工作中 关键点也在于如何划分区域 如何找到层层嵌套的关系 在这
  • SpringSecurity快速入门和自定义用户名、密码的实现

    SpringSecurity自定义用户名和密码的实现 在SpringBoot项目中导入SpringSecurity依赖 自定义用户名和密码登录的实现 第一种实现方式 配置文件的实现 第二种实现方式 继承WebSecurityConfigur
  • php中_initialize的返回

    php中子类会自动调用父类的 initialize 方法 而不用像 construct 构造方法中 要在子类的构造方法中写明调用父类的构造方法 parent construct 可以将权限验证 生成菜单等每个方法都要使用的操作 放在父类的
  • 企业数字化转型中的能力框架

    首先还是看下对于数字化转型的一个基本定义 我们在这里引用两个定义 一个是百度百科的定义 一个是IDC的定义 先看下百度百科上对数字化转型定义如下 数字化转型 Digital transformation 是建立在数字化转换 Digitiza
  • 【python二级-练习题】

    python江湖 1 求长方形面积 题目描述 代码如下 2 随机密码验证 题目描述 代码如下 3 信息分配表 字典 题目描述 代码如下 4 全模式分词 jieba 题目描述 代码如下 5 数字金字塔 题目描述 代码如下 6 求最大值 最小值