二级python程序题

1、利用random随机库里的函数,生成一个由四个大小写字母组成的验证码,显示在屏幕上
我的解答:

import random as r
zmb = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
r.seed(1)
code=""
for i in range(4):
    a=r.randrange(71,123)
    code=code+str(chr(a))
print(code)

系统解答:

import random as r
zmb = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz'
r.seed(1)
code = ''
for i in range(4):
    code += r.choice(zmb)
print(code)

系统解析:
1.用随机数要导入random库,并记别名为r
2.先定义好要使用的英文字母表;
3.用seed(1)初始化随机函数,保证后面产生的随机数跟标准答案的一致
4.初始化密码code为一个空字符串;

  1. 循环4次,在循环里构造验证码的每个字符。从英文字母表里随机选取一个字母;用字符串的+=运算符,追加到密码变量上。

2、
第二题题目

系统解答:

import turtle as t

color = ['red','pink','green']
ra = [20, 50, 100]
pi = 3.14159
for i in range(3):
    t.pu()
    t.goto(0, -ra[i])
    t.pd()
    t.pencolor(color[i])
    t.circle(ra[i])
t.done()

系统解析:
题目给出了基本数据的定义,后面要使用这些变量
在for循环里面,主要问题是画笔的定位,要考虑圆心的位置是(0,0)的时候,画笔要移动到圆心位置正下方,因此坐标点是(0,-ra[i])
画笔颜色要从颜色列表里选取
画圆的半径也从变量里面获取

3、
第三题图

系统解答:

members = {'张三':['人力部',5500],
            '李四':['后勤部',4500],
            '王三':['市场部',6500],
            '赵六':['开发部',8500]
           }
sal_dep = {}
for key in members:
    print('{}的工资是:{}, 部门是{}'.format(key, members[key][1], members[key][0]))
    sal_dep[members[key][1]] = members[key][0]
max_val = max(sal_dep)
max_name = sal_dep[max_val]
print('工资最高的部门是:{},该部门工资是:{}'.format(max_name,max_val))

系统解析:
字典members里的value是个列表,所以需要用到列表的索引
对着字典members遍历,按照要求显示每个员工的工资和部门信息,另外还要取得工资和部门的名称存入字典sal_dep
为了统计工资最高的部门的工资,需要字典sal_dep来保存这两个信息
并且这个字典的key应该是工资数
用max函数对字典sal_dep的key进行求最大值的计算,并将最大值赋给变量max_val
再从字典里,取出key为max_val的value赋给变量max_name
最后按照要求显示结果

4、
第四题图

系统解答:

import jieba        # 导入jieba中文分词库
dk = {}             # 定义dk字典变量 type(dk):<class 'dict'>

#使用with后不管with中的代码出现什么错误,都会进行对当前对象进行清理工作。
#例如file的file.close()方法,无论with中出现任何错误,都会执行file.close()方法

#以指定utf-8编码只读方式打开data.txt文件,文件句柄命名为f
with open('data.txt','r',encoding = "utf-8") as f:  
    sl = f.readlines()

#print(type(f))    f是<class '_io.TextIOWrapper'>文件句柄的类型
#print(type(sl))   sl是一个列表,包含了文件中每一行内容
#print(type(sl[0]))  sl[0]是列表sl中第一个元素,是文件中第一行所有内容

for s in sl:        #循环读取列表元素
    k =jieba.lcut(s, cut_all = True)
    #对每个s,使用jieba.lcut函数以全模式方式返回一个列表(由词语组成)
    for wo in k:    #对每个词语进行筛选
        if len(wo) == 2:    #如果词语的长度为2,进行统计
           dk[wo] = dk.get(wo,0) + 1
           #逐步构建统计字典,形式如{"大学":1,"设计":2,...},备注,这里的1、2是逐渐变化中

dp = list(dk.items())   #转换为列表,列表中元素为元组。
dp.sort(key= lambda x:int(x[1]), reverse = True)

for i in range(10):   #输出排序后的内容
   print("{}:{}".format(dp[i][0],dp[i][1]))

5、输入一个正整数(范围为65-96),请输出对应的Unicode字符。

# -*- coding:utf-8 -*-
x = eval(input())   #输入为"65",由eval函数转变为数值65
print("{:c}".format(x))  #输出Unicode编码为65,对应的字符为"A"

# 如果输入的是"a",会出现如下错误提示:   
# File "<string>", line 1, in <module>
# NameError: name 'a' is not defined
# 原因:eval函数只能识别数字字符串,对于输入"a",只能被识别为一个变量名称为a,
#       a 这个变量是不存在的,从而出现错误。
#       如果要避免这样的意外出现,请尝试使用try-catch语句完善代码。
# 本题目的考察点在于format函数的格式输出规则。

6、获得用户输入的一个字符串,将字符串逆序输出,同时紧接着输出字符串的个数
我的解答:

s = input()
print(s.reverse(),end="")
print(len(s))

我的是错的,因为reverse()是对列表进行反转,而不是字符串,所以正确解答应该是:

# -*- coding:utf-8 -*-
'''
This is a python123.io file.
'''
s = input()           #从键盘获取输入,返回字符串
print(s[::-1],end="") #字符串逆序输出,详见代码后说明
print(len(s))         #输出字符串长度

7、以123为随机数种子,随机生成10个在1(含)到999(含)之间的随机整数,每个随机数后跟随一个逗号进行分隔,屏幕输出这10个随机数。

import random
random.seed(123)
for i in range(10):
    print(random.randint(1,999), end=",")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • ORACLE自学教程 --create tabletestone ( id number, --序号usernam...
    落叶寂聊阅读 4,865评论 0 0
  • 引出 •请思考如下问题? –查询所有员工的每个月工资总和,平均工资? –查询工资最高和最低的工资是多少? –查询公...
    C_cole阅读 12,045评论 0 3
  • 5.DML DML 语句 语句操作语言 INSERT UPDATE DELETE MERGE INSERT 方法:...
    乔震阅读 4,714评论 0 0
  • 基于《Python语言程序设计基础(第2版)》 第一部分 初识Python语言 第1章 程序设计基本方法 1.1 ...
    柄志阅读 27,692评论 4 44
  • 记得几年前在采访一个文化公司老总时,认识的他。他在文化公司旗下一个部门做音乐监制和宣传片的拍摄工作,因为他本人是广...
    善纯阅读 1,531评论 0 0

友情链接更多精彩内容