【python二级-练习题】

【python二级-练习题】2、随机密码验证题目描述:代码如下:3、信息分配表(字典)题目描述:代码如下:4、全模式分词(jieba)题目描述:代码如下:5、数字金字塔题目描述:6、求最大值、最小值及平均值题目描述:代码如下:7、交换变量题目描述:代码如下:或或8、输入密码-三次机会题目描述:代码如下:9、水仙花数题目描述:代码如下:或或或10、增加与去掉题目描述:代码如下:11、添加通讯录信息题目

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用


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

持续更新中…

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/182670.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • ASP数组排序_字符数组

    ASP数组排序_字符数组=====================================作者:80端口,阿里西西时间:2005-12-23作用:对数据进行重新排序=====================================FunctionNewOrder(sz)Dimali,icount,i,ii,j,itempali=split(sz,”,”)icount=UBound(ali)F

    2022年10月24日
  • Android开发 – 基本UI设计

    Android开发 – 基本UI设计文章目录Android开发-基本UI设计1.页面部分占用1/N的情况2.分割线的实现Android开发-基本UI设计本博客记录本人在安卓开发时候遇到的一些UI设计的问题以及解决方法记录来自Project-FoodList1.页面部分占用1/N的情况示例:完整界面 界面顶部要求顶部界面只占1/3解决方案使用线性布局,其属性android:orienta…

  • ios捕获异常并发送图片,便于解决bug[通俗易懂]

    ios捕获异常并发送图片,便于解决bug

  • html使用vue axios,使用 Vue和axios

    html使用vue axios,使用 Vue和axios昨天写完了博客以后,有人就在我的博客下面留言说现在不是使用了Axios了吗?我赶紧再把Axios的例程给补上,并且做一个更新。其实vue-resource并不复杂,就是不稳定。Vue官方放弃它也是对的,作者是这样子说的最近团队讨论了一下,Ajax本身跟Vue并没有什么需要特别整合的地方,使用fetchpolyfill或是axios、superagent等等都可以起到同等…

    2022年10月29日
  • 动态规划之背包问题(C语言)

    动态规划之背包问题(C语言)动态规划动态规划(英语:Dynamicprogramming,简称DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题动态规划思想大致上为:若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。由于通常许多子问题非常相似,为此动态规划法试图仅仅解决每个子问题一次,从而减少计算

  • 面试 设计题_设计模式面试题及答案

    面试 设计题_设计模式面试题及答案文章目录设计模式什么是设计模式为什么要学习设计模式设计模式分类设计模式的六大原则开放封闭原则(OpenClosePrinciple)里氏代换原则(LiskovSubstitutionPrinciple)依赖倒转原则(DependenceInversionPrinciple)接口隔离原则(InterfaceSegregationPrinciple)迪米特法则(最少知道原则)(Deme…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号