Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理

嵩天老师-Python语言程序设计-Python123配套练习测验题目汇总整理

作者头像
用户7886150
修改于 2020-11-25 02:20:56
修改于 2020-11-25 02:20:56
3K0
举报
文章被收录于专栏:bit哲学院bit哲学院

参考链接: Python中的类型转换

测验1:Python基本语法元素 

知识点概要: 

普遍认为Python语言诞生于1991年Python语言中的缩进在程序中长度统一且强制使用,只要统一即可,不一定是4个空格(尽管这是惯例)IPO模型指:Input Process Output字符串的正向递增和反向递减序号体系:正向是从左到右,0到n-1,反向是从右到左,-1到-n,举例 

str = "csdn" 

#str[0]就表示字符串c, str[-1]表示"n"

Python的合法命名规则:命名包含字母,数字,下划线,但是首字符不能是数字Python中获得用户输入的方式为:input()Python中的保留字:type不是,是内置函数,def elif import 都是保留字Python的数据类型有整数、列表、字符串等,但是不包括实数,实数是数学概念,在Python中对应着浮点数保留字if-elif-else用于表示分支结构,in用来进行成员判断print()格式化输出,控制浮点数的小数点后两位输出应为:print("{:.2f}".format(XX)) :.2f哪一个都不能少 

编程测试: 

Hello World 的条件输出:获得用户输入的一个整数,参考该整数值,打印输出"Hello World",要求:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如果输入值是0,直接输出"Hello World"‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如果输入值大于0,以两个字符一行方式输出"Hello World"(空格也是字符)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 如果输入值小于0,以垂直方式输出"Hello World" 

# eval()函数可以将默认输入的字符串去掉双引号并进行表达式运算,如输入500+20,默认

#得到的输入为一个字符串“500+20”,但是使用eval()函数我们得到的是一个整型数字:520

Number = eval(input())

if Number == 0:

    print("Hello World")

elif Number > 0:

    print("He\nll\no \nWo\nrl\nd")

else:

    for c in "Hello World":

        print(c)

数值运算:获得用户输入的一个字符串,格式如下:M OP N ,其中,M和N是任何数字,OP代表一种操作,表示为如下四种:+, -, *, /(加减乘除)‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬根据OP,输出M OP N的运算结果,统一保存小数点后2位。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 注意:M和OP、OP和N之间可以存在多个空格,不考虑输入错误情况。 

print("{:.2f}".format(eval(input())))

测验2:Python基本图形绘制 

知识点概要: 

正确引用turtle库的方式: 

import turtle

#t是别名,可以更换其他名称

import turtle as t 

from turtle import setup

from turtle import *

import setup from turtle是不正确的 

turtle库是一个直观有趣的图形绘制函数库,最早成功应用于LOGO编程语言,turtle绘图体系以水平右侧为绝对方位的0度,turtle坐标系的原点****默认在屏幕正中间turtle.circle(-90,90)表示绘制一个半径为90像素的弧形,圆心在小海龟当前行进的右侧 

# circle(x,y)表示以x长度为半径,y为角度,

#当前方向左侧x处为圆心画圆,其中x,y都可以是负数,相应取反

#当前方向是水平向右的,对应直角坐标系中的x轴正方向

#x为正,则圆心在y轴正方向上,y为正,逆时针画圆,圆弧角度为y

#x为负则相反,圆心在y轴负方向上,y为正,顺时针画圆,圆弧角度为y

turtle.seth(to_angle)函数的作用是设置小海龟当前行进方向为to_angle,to_angle是角度的整数值turtle.fd(distance)函数的作用是向小海龟当前行进方向前进distance距离turtle.pensize(size)函数的作用是改变画笔的宽度为size像素turtle**.circle**()函数不能绘制椭圆形turtle.circle(x,y)函数绘制半圆,第二个参数y是180的奇数倍turtle.penup()的别名有turtle.pu(),turtle.up()turtle.colormode()的作用是设置画笔RGB颜色的表示模式turtle.width()和turtle.pensize()都可以用来设置画笔尺寸turtle.pendown()只是放下画笔,并不绘制任何内容改变turtle画笔的运行方向有left()、right()和seth()函数,bk()只能后退,但是不改变方向turtle.done()用来停止画笔绘制,但绘图窗体不关闭,建议在每个turtle绘图最后增加turtle.done()循环相关保留字是:for…in和while,def用于定义函数 

编程测试: 

turtle八边形绘制:使用turtle库,绘制一个八边形 

import turtle as t

t.pensize(2)

for i in range(8):

    t.fd(100)

    t.left(45)

turtle八角图形绘制:使用turtle库,绘制一个八角图形 

import turtle as t

t.pensize(2)

for i in range(8):

    t.fd(150)

    t.left(135)

测验3:基本数据类型 

知识点概要: 

pow(x,0.5)能够计算x的平方根,计算负数的平方根将产生复数字符串.strip()方法的功能是去掉字符串两侧指定的字符字符串.split()方法的功能是按照指定字符分隔字符串为数组字符串.repalce()方法的功能是替换字符串中特定字符+操作符用来连接两个字符串序列字符串是一个连续的字符序列,使用\n可以实现打印字符信息的换行val = pow(2,1000) #返回val结果的长度值要使用 len(str(val)),因为整型没有len()方法,要通过str()函数 #将数字类型转换为字符串正确引用time库的方式如下: 

import time

from time import strftime

from time import *

Python语言的整数类型表示:十进制(一般表示)二进制(0b或0B开头)八进制(0o或0O开头)十六进制(0x或0X开头)%运算符的意思是取余数字符串切片操作:s[N:M],从N到M,但是不包括M 

name="Python语言程序设计课程"

print(name[0],name[2:-2],name[-1])

#输出结果为:P thon语言程序设计 程

print("{0:3}".format('PYTHON'))代码执行的结果是PYTHON,{0:3}表示输出的宽度是3,但是如果字符串长度超过3就以字符串长度显示 

编程测试: 

平方根格式化:获得用户输入的一个整数a,计算a的平方根,保留小数点后3位,并打印输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬输出结果采用宽度30个字符、右对齐输出、多余字符采用加号(+)填充,‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬如果结果超过30个字符,则以结果宽度为准 

a = eval(input())

print("{:+>30.3f}".format(a**0.5)) 

# +是填充字符 >是右对齐 30是宽度 .3f是保留小数点后3位

#若平凡根后是一个复数,复数的实部和虚部都是浮点数,.3f可以将实部和虚部分别取三位小数

字符串分段组合:获得输入的一个字符串s,以字符减号(-)分割s,将其中首尾两段用加号(+)组合后输出 

InputStr = input()

strs = InputStr.split('-')

print(strs[0]+'+'+strs[-1])

print("{}+{}".format(strs[0], strs[-1]))

#s.split(k)以k为标记分割s,产生一个列表

#通过该题目,掌握split()方法的使用,注意:k可以是单字符,也可以是字符串

测验4:程序的控制结构 

知识点概要: 

for…in…中in的后面需要的是一个迭代类型(组合类型),{1;2;3;4;5}不是Python的有效数据类型range(x,y) 

for i in range(0,2):

    print(i)

#输出结果为:0 1

程序的三种基本结构:顺序结构,循环结构和分支结构循环是程序根据条件判断结果向后反复执行的一种运行方式,是一种程序的基本控制结构,条件循环和遍历循环结构都是基本的循环结构,死循环能够用于测试性能,形式上的死循环可以用break来退出,例如 

x = 10

while True:

    x = x -1

    if x == 1:

        break

p = -p #表示给p赋值为它的负数,Python中的=是赋值符号缩进表达层次关系,同时用来判断当前Python语句在分支结构中continue结束当次循环,但是不跳出循环random库中用于生产随机小数的函数是random(),而randint()/getrandbits()/randrange()都产生随机整数程序错误是一个大的概念,不仅指代码运行错误,更代表功能逻辑错误。使用异常处理try-excepy,可以对程序的异常进行捕捉和处理,程序运行可能不会出错,但逻辑上可能会出错 

编程测试: 

四位玫瑰数:四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬ 例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‮‬‫ 请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行 

#个人思路:求四位数的各个位数abcd

for i in range(1000,10000):

    a = i%10

    b = (i//10)%10

    c = (i//100)%10

    d = (i//1000)%10

    if a**4 + b**4 + c**4 + d**4 == i:

        print(i)

#参考答案:字符串+eval()

s = ""

for i in range(1000, 10000):

    t = str(i)

    if pow(eval(t[0]),4) + pow(eval(t[1]),4) + pow(eval(t[2]),4) + pow(eval(t[3]),4) == i :

        print(i)

100以内素数之和:求100以内所有素数之和并输出‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 素数指从大于1,且仅能被1和自己整除的整数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬,提示:可以逐一判断100以内每个数是否为素数,然后求和 

sum = 0

for i in range(2,100):

    isFlag = 1 #判断是否为素数

    for j in range(2,i): #遍历2-i-1,看是否能被i整除

        if i%j == 0: #被整除说明不是素数

            isFlag = 0

            break

    if isFlag == 1:

        sum += i

print(sum)

#参考答案:将判断是否为素数封装为一个函数,倾向于这种解题思路

def is_prime(n):

    for i in range(2,n):

        if n%i == 0:

            return False

    return True

sum = 0

for i in range(2,100):

    if is_prime(i):

        sum += i

print(sum)

测验5:函数和代码复用 

知识点概要: 

函数作用:增强代码可读性、降低编程复杂度、复用代码,函数不能直接提高代码的执行速度全局变量与局部变量:函数的参数一般为局部变量,函数内使用global s 表示变量s为全局变量函数在调用前必须已经存在函数定义,否则无法执行,Python内置函数直接使用,不需要引用任何模块模块内高耦合,模块间低耦合:高耦合的特点是复用较为困难,模块间关系应尽可能简单,模块之间耦合度低,尽可能合理划分功能块,功能块内部耦合度高递归不会提高程序的执行效率,任何递归程序都可以通过堆栈或队列变为非递归程序函数是一段具有特定功能的、可重用的语句组,可以看做是一段具有名字的程序,通过函数名来调用,同时不需要知道函数的内部实现原理,只需要知道调用方法(接口)即可def func(*a,b):是错误的函数定义,*a表示可变参数,可变参数只能放在函数参数的最后,即def func(a,*b):函数可以包含0个或多个return语句每个递归函数至少存在一个基例,但可能存在多个基例,基例表示不再进行递归,同时决定了递归的深度 

编程测试: 

随机密码生成:以整数17为随机数种子,获取用户输入整数N为长度,产生3个长度为N位的密码,密码的每位是一个数字。每个密码单独一行输出,产生密码采用random.randint()函数 

import random

def genpwd(length):

    a = 10**(length-1)

    b = 10**length - 1

    return "{}".format(random.randint(a, b))

length = eval(input())

random.seed(17)

for i in range(3):

    print(genpwd(length))

#思路类似,同样过了

def genpwd(length):

    high = 10**length

    low = 10**(length-1)

    return random.randrange(low,high)

连续质数计算:获得用户输入数字N,计算并输出从N开始的5个质数,单行输出,质数间用逗号,分割。 注意:需要考虑用户输入的数字N可能是浮点数,应对输入取整数;最后一个输出后不用逗号 

def prime(m): #判断是否为质数

    for i in range(2,m):

        if m%i == 0:

            return False

    return True

n = eval(input())

if n != int(n): #考虑输入为浮点数的情况

    n = int(n) + 1

else:

    n = int(n)   

times = 0 #统计质数的次数

res = [] #存放输出结果

while times < 5:

    if prime(n):

        res.append(n)

        times += 1

    n += 1

for i in res[:len(res)-1]:

    print(i,end=",")

print(res[-1]) #最后一个不输出逗号

#参考答案

def prime(m):

    for i in range(2,m):

        if m % i == 0:

            return False

    return True

#需要对输入小数情况进行判断,获取超过该输入的最小整数(这里没用floor()函数)

n = eval(input())

n_ = int(n)

n_ = n_+1 if n_ < n else n_

count = 5

#对输出格式进行判断,最后一个输出后不增加逗号(这里没用.join()方法)

while count > 0:

    if prime(n_):

        if count > 1:

            print(n_, end=",")

        else:

            print(n_, end="")

        count -= 1 

    n_ += 1

测验6:组合数据类型 

知识点概要: 

列表ls,ls.append(x)表示只能向列表最后增加一个元素,如果x是一个列表,则该列表作为一个元素增加到ls中集合“交并差补”四种运算分别对应的运算符是:& | - ^字典d,d.values()返回的是dict_values类型,包括字典中的所有值,通常与for…in组合使用Python的元组类型:元组采用逗号和圆括号(可选)来表示,一旦创建就不能修改,一个元组可以作为另一个元祖的元素,可用多级索引获取信息,序列类型(元组、列表)中的元素都可以是不同类型创建字典时,如果相同键对应不同值,字典采用最后一个"键值对" 

d= {'a': 1, 'b': 2, 'b': '3'}

print(d['b'])

#输出结果:3

集合与字典类型最外侧都用{}表示,不同在于集合类型元素是普通元素,字典类型元素是键值对。字典在程序设计中非常常用,因此直接采用{}默认生成一个空字典对于字典d:x in d表示判断x是否是字典d中的键,键是值的序号,也是字典中值的索引方式Python序列类型有:列表类型、元组类型、字符串类型(Python内置数据类型中没有数组类型)组合数据类型能够将多个相同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序、更容易组合数据类型可以分为3类:序列类型、集合类型和映射类型;Python的字符串、元组和列表类型都属于序列类型,序列类型总体上可以看成一维向量,如果其元素都是序列,则可被当作二维向量对于序列s:s.index(x)返回序列s中元素x第一次出现的序号,并不返回全部序号 

编程测试: 

数字不同数之和:获得用户输入的一个整数N,输出N中所出现不同数字的和‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 例如:用户输入 123123123,其中所出现的不同数字为:1、2、3,这几个数字和为6 

#参考答案:字符串可以通过list()直接变成列表,或通过set()直接变成集合

n = input()

ss = set(n)

s = 0

for i in ss:

    s += eval(i)

    #s += int(i) #同样可以

print(s)

人名最多数统计:给出了一个字符串,其中包含了含有重复的人名,请直接输出出现最多的人名 

#先使用字典建立"姓名与出现次数"的关系,然后找出现次数最多数对应的姓名

s = '''双儿 洪七公 赵敏 赵敏 逍遥子 鳌拜 殷天正 金轮法王 乔峰 杨过 洪七公 郭靖 

       杨逍 鳌拜 殷天正 段誉 杨逍 慕容复 阿紫 慕容复 郭芙 乔峰 令狐冲 郭芙 

       金轮法王 小龙女 杨过 慕容复 梅超风 李莫愁 洪七公 张无忌 梅超风 杨逍 

       鳌拜 岳不群 黄药师 黄蓉 段誉 金轮法王 忽必烈 忽必烈 张三丰 乔峰 乔峰 

       阿紫 乔峰 金轮法王 袁冠南 张无忌 郭襄 黄蓉 李莫愁 赵敏 赵敏 郭芙 张三丰 

       乔峰 赵敏 梅超风 双儿 鳌拜 陈家洛 袁冠南 郭芙 郭芙 杨逍 赵敏 金轮法王 

       忽必烈 慕容复 张三丰 赵敏 杨逍 令狐冲 黄药师 袁冠南 杨逍 完颜洪烈 殷天正 

       李莫愁 阿紫 逍遥子 乔峰 逍遥子 完颜洪烈 郭芙 杨逍 张无忌 杨过 慕容复 

       逍遥子 虚竹 双儿 乔峰 郭芙 黄蓉 李莫愁 陈家洛 杨过 忽必烈 鳌拜 王语嫣 

       洪七公 韦小宝 阿朱 梅超风 段誉 岳灵珊 完颜洪烈 乔峰 段誉 杨过 杨过 慕容复 

       黄蓉 杨过 阿紫 杨逍 张三丰 张三丰 赵敏 张三丰 杨逍 黄蓉 金轮法王 郭襄 

       张三丰 令狐冲 赵敏 郭芙 韦小宝 黄药师 阿紫 韦小宝 金轮法王 杨逍 令狐冲 阿紫 

       洪七公 袁冠南 双儿 郭靖 鳌拜 谢逊 阿紫 郭襄 梅超风 张无忌 段誉 忽必烈 

       完颜洪烈 双儿 逍遥子 谢逊 完颜洪烈 殷天正 金轮法王 张三丰 双儿 郭襄 阿朱 

       郭襄 双儿 李莫愁 郭襄 忽必烈 金轮法王 张无忌 鳌拜 忽必烈 郭襄 令狐冲 

       谢逊 梅超风 殷天正 段誉 袁冠南 张三丰 王语嫣 阿紫 谢逊 杨过 郭靖 黄蓉 

       双儿 灭绝师太 段誉 张无忌 陈家洛 黄蓉 鳌拜 黄药师 逍遥子 忽必烈 赵敏 

       逍遥子 完颜洪烈 金轮法王 双儿 鳌拜 洪七公 郭芙 郭襄 赵敏'''

names = s.split()

d = {}

for name in names:

    d[name] = d.get(name, 0) + 1

Maxkey = ""

MaxValue = 0

for k in d:

    if d[k] > MaxValue:

        Maxkey = k

        MaxValue = d[k]

print(Maxkey)

#参考答案

ls = s.split()

d = {}

for i in ls:

    d[i] = d.get(i, 0) + 1

max_name, max_cnt = "", 0

for k in d:

    if d[k] > max_cnt:

        max_name, max_cnt = k, d[k]

print(max_name)

测验7:文件和数据格式化 

知识点概要: 

数据组织的纬度:一维数据采用线性方式组织,对应于数学中的数组和集合等概念;二维数据采用表格方式组织,对应于数学中的矩阵;高维数据由键值对类型的数据构成,采用对象方式组织,字典就用来表示高维数据,一般不用来表示一二纬数据Python对文件操作采用的统一步骤是:打开-操作-关闭(其中关闭可以省略)CSV文件格式是一种通用的、相对简单的文件格式,应用于程序之间转移表格数据,CSV文件的每一行是一维数据,可以使用Python中的列表类型表示,整个CSV文件是一个二维数据,一般来说,CSV文件都是文本文件,由相同的编码字符组成二维列表切片ls = [[1,2,3],[4,5,6],[7,8,9]]获取其中的元素5要使用:ls[1][1]文件可以包含任何内容,是数据的集合和抽象,是存储在辅助存储器上的数据序列,而函数或类才是程序的集合和抽象打开文件后采用close()关闭文件是一个好习惯。如果不调用close(),当前Python程序完全运行退出时,该文件引用被释放,即程序退出时,相当于调用了close(),默认关闭Python文件的"+"打开模式,与r/w/a/x一同使用,在原功能基础上同时增加了读写功能,同时赋予文件的读写权限同一个文件既可以用文本方式打卡,也可以用二进制方式打开列表元素如果都是列表,其可能表示二维数据,如[[1,2],[3,4],[5,6]],如果列表元素不都是列表,则它表示一维数据Python文件读操作有:read()、readline()、readlines(),没有readtext()方法 

编程测试: 

文本的平均列数:打印输出附件文件的平均列数,计算方法如下:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (1)有效行指包含至少一个字符的行,不计算空行‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (2)每行的列数为其有效字符数‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬ (3)平均列数为有效行的列数平均值,采用四舍五入方式取整数进位 

#for line in f 获取的line包含每行最后的换行符(\n),所以去掉该换行符再进行统计

f = open("latex.log", "r", encoding="utf-8")

lines = 0

columns = 0

for line in f:

    line = line.strip("\n")

    if len(line):

        lines += 1

        columns += len(line)

print("{:.0f}".format(columns/lines))

f.close()

#参考答案如下:

f = open("latex.log")

s, c = 0, 0

for line in f:

    line = line.strip("\n")

    if line == "":

        continue

    s += len(line)

    c += 1

print(round(s/c))

-CSV格式清洗与转换:附件是一个CSV格式文件,提取数据进行如下格式转换:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (1)按行进行倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮ (2)每行数据倒序排列‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ (3)使用分号(;)代替逗号(,)分割数据,无空格‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ 按照上述要求转换后将数据输出 

f = open("data.csv", "r", encoding="utf-8")

txt = f.readlines()

txt.reverse() #按行进行倒序排列

for line in txt:

    #line = line.strip("\n") #去除末尾换行符

    #line = line.replace(" ","") #去空格

    line = line.strip("\n").replace(" ", "")

    #ls = line.split(",") 

    #ls = ls[::-1]

    ls = line.split(",")[::-1] #逗号分隔并将分隔后的元素倒序

    print(";".join(ls)) #元素间插入分号

f.close()

#参考答案(使用strip()方法去掉每行最后的回车,使用replace()去掉每行元素两侧的空格)

f = open("data.csv")

ls = f.readlines()

ls = ls[::-1]

lt = []

for item in ls:

    item = item.strip("\n")

    item = item.replace(" ", "")

    lt = item.split(",")

    lt = lt[::-1]

    print(";".join(lt))

f.close()

测验8:程序设计方法学 

知识点概要: 

用户体验:编程只是手段,程序最终为人类服务,用户体验很重要,一个提醒进度的进度条、一个永不抛出异常的程序、一个快速的响应、一个漂亮的图标、一个合适尺寸的界面等都是用户体验的组成部分。总的来说,用户体验是一切能够提升程序用户感受的组成计算思维是基于计算机的思维模式,计算机出现之前,由于没有快速计算装置,计算所反映的思维模式主要是数学思维,即通过公式来求解问题。当快速计算装置出现后,计算思维才真正形成软件产品 = 程序功能 + 用户体验 ;产品不仅需要功能,更需要更好的用户体验。往往,产品都需要综合考虑技术功能和人文设计,这源于产品的商业特性。即,商业竞争要求产品不能只关心技术功能,更要关心用户易用和喜好需求os库:os.system()可以启动进程执行程序函数是自顶向下设计的关键元素,通过定义函数及其参数逐层开展程序设计os.path子库:os.path.relpath(path)用来计算相对路径Python第三方库安装:使用pip命令、使用集成安装工具或访问UCI网站下载安装文件,请不要直接联系作者索要第三方库计算思维的本质是:抽象和自动化os库是Python重要的标准库之一,提供了路径操作、进程管理等几百个函数功能,覆盖与操作系统、文件操作等相关的众多功能;os库适合所有操作系统计算生态以竞争发展、相互依存和迅速更迭为特点,在开源项目间不存在顶层设计,以类自然界"适者生存"的方式形成技术演进路径 

编程测试: 

英文字符的鲁棒输入:获得用户的任何可能输入,将其中的英文字符进行打印输出,程序不出现错误 

inputStr = input()

for i in inputStr:

    if i.islower() or i.isupper():

        print(i,end="")

#参考答案:采用遍历字符的方式实现,通过约束字母表达到鲁棒效果

alpha = []

for i in range(26):

    alpha.append(chr(ord('a') + i))

    alpha.append(chr(ord('A') + i))

s = input()

for c in s:

    if c in alpha:

        print(c, end="")

数字的鲁棒输入:获得用户输入的一个数字,可能是浮点数或复数,如果是整数仅接收十进制形式,且只能是数字。对输入数字进行平方运算,输出结果,要求: 1)无论用户输入何种内容,程序无错误‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬ 2)如果输入有误,请输出"输入有误" 

number = input()

try:

    #complex()和complex(eval())之间的比较

    #将能够排除非数字类型的输入

    if complex(number) == complex(eval(number)):

        print(eval(number) ** 2)

except:

    print("输入有误") 

'''

不能直接使用eval(),否则用户可以通过输入表达式(如100**2)输入数字

与要求不同(在实际应用中会带来安全隐患)

'''

测验9:Python计算生态纵览 

知识点概要: 

Python网络爬虫方向第三方库有:Requests、Scrapy、pyspiderPython数据可视化方向第三方库有:Mayavi、Matplotlib、SeabornPython Web信息提取方向第三方库有:Beautiful Soup、Python-Goose、RePython游戏开发第三方库有:Panda3D、cocos2d、PyGamePython数据分析方向第三方库有:Numpy、Pandas、ScipyPython图形用户界面方向(GUI)第三方库有:PyQt5、wxPython、PyGObjectPython网站开发框架方向第三方库有:Django、Pyramid、FlaskPython文本处理方向第三方库有:NLTK、python-docx、PyPDF2Python网络应用开发方向第三方库有:aip、MyQR、WeRobotaip是百度的人工智能功能Python访问接口Python人工智能方向第三方库有:TensorFlow、Scikit-learn、MXNetVizard是虚拟现实第三方库pyovr是增强现实开发库redis-py是redis数据的Python访问接口 

编程测试: 

系统基本信息获取:获取系统的递归深度、当前执行文件路径、系统最大UNICODE编码值等3个信息,并打印输出;输出格式如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬ RECLIMIT:<深度>, EXEPATH:<文件路径>, UNICODE:<最大编码值>‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮ 提示:请在sys标准库中寻找上述功能 

import sys

print("RECLIMIT:{}, EXEPATH:{}, UNICODE:{}".format(sys.getrecursionlimit(), sys.executable, sys.maxunicode))

二维数据表格输出:tabulate能够对二维数据进行表格输出,是Python优秀的第三方计算生态。‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬编写程序,能够输出如下风格效果的表格数据  

data = [ ["北京理工大学", "985", 2000], \

         ["清华大学", "985", 3000], \

         ["大连理工大学", "985", 4000], \

         ["深圳大学", "211", 2000], \

         ["沈阳大学", "省本", 2000], \

    ]

from tabulate import tabulate

print(tabulate(data, tablefmt="grid"))

期末测验 

*编程测试: 

无空隙回声输出:获得用户输入,去掉其中全部空格,将其他字符按收入顺序打印输出 

print(input().replace(" ",""))

文件关键行数:关键行指一个文件中包含的不重复行。关键行数指一个文件中包含的不重复行的数量。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬统计附件文件中关键行的数量 

f = open("latex.log", "r", encoding="utf-8")

d = {}

for line in f:

    d[line] = d.get(line, 0) + 1

print("共{}关键行".format(len(d)))

#参考答案:如果需要"去重"功能,请使用集合类型

f = open("latex.log")

ls = f.readlines()

s = set(ls)

print("共{}关键行".format(len(s)))

剩余两题与测验九重复,不重复记录

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
搭建ELFK日志采集系统
最近的工作涉及搭建一套日志采集系统,采用了业界成熟的ELFK方案,这里将搭建过程记录一下。
jeremyxu
2019/03/13
2.6K0
搭建ELFK日志采集系统
ELK+filebeat日志分析系统部署文档
filebeat部署在客户端用于收集日志并把收集到的日志发送到logstash. logstash把收集到的日志处理之后交给elasticsearch. kibana从elasticsearch中提取数据并进行展示. 之所以使用filebeat进行日志收集是因为filebeat不会像logstash使用大量的资源,影响业务服务器.
星哥玩云
2022/07/12
4440
ELK+filebeat日志分析系统部署文档
CentOS7上安装Elasticsearch+Logstash+Kibana日志管理系统
集中日志记录在尝试识别服务器或应用程序的问题时非常有用,因为它允许您在单个位置搜索所有日志。它也很有用,因为它允许您通过在特定时间范围内关联其日志来识别跨多个服务器的问题。本系列教程将教您如何在CentOS上安装Logstash和Kibana,然后如何添加更多过滤器来构造您的日志数据。
菲宇
2019/06/13
3.3K0
CentOS7上安装Elasticsearch+Logstash+Kibana日志管理系统
如何在CentOS 7上安装Elasticsearch,Logstash和Kibana(ELK堆栈)
版权声明:本文为木偶人shaon原创文章,转载请注明原文地址,非常感谢。 https://blog.csdn.net/wh211212/article/details/54015645
shaonbean
2019/05/26
2K0
Elastic stack日志分析集群部署
Elastic stack 俗称 ELK stack,是一组包括 Elasticsearch、Logstash 和 Kibana 在内的开源产品。Elastic Stack 由 Elastic 公司开发和维护。使用 Elastic stack,可以将系统日志发送到 Logstash,它是一个数据收集引擎,接受来自可能任何来源的日志或数据,并对日志进行归一化,然后将日志转发到 Elasticsearch,用于分析、索引、搜索和存储,最后使用 Kibana 表示为可视化数据,使用 Kibana,我们还可以基于用户的查询创建交互式图表。
Power
2025/03/03
1450
ELK自动安装脚本
ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
KaliArch
2018/04/19
1.8K1
ELK自动安装脚本
ELK+filebeat采集java日志
此文章是我在生产环境下搭建ELK日志系统的记录,该日志系统主要是采集Java日志,开发人员能通过kibanaWeb页面查找相关主机的指定日志;对于Java日志,filebeat已做多行合并、过滤行处理,更精准的获取需要的日志信息,关于ELK系统的介绍,这里不再赘述。
肓己
2021/08/12
1.8K0
kubernetes Filebeat+ELK日志收集监控方案
接收来自filebeat的数据,根据其中的tags进行分类,再添加index进行分类,例如nginx-access-%{+YYYY.MM.dd},在kibana中会根据这个index获取日志。
kubernetes中文社区
2019/06/24
3.2K0
kubernetes  Filebeat+ELK日志收集监控方案
ELK Stack日志中心搭建
本文主要目的是简化搭建ELK环境的步骤,使用Docker Compose部署ELK 7.1.1分布式集群的日志框架,只需要执行一个init.sh脚本即可搭建好一个ELK Stack日志中心。
茶半香初
2021/11/26
5800
ELK Stack日志中心搭建
ELK安装
https://blog.csdn.net/magerguo/article/details/79637646
dogfei
2020/07/31
6790
ELK日志分析系统安装和部署
1.1 平台环境: OS:CentOS release 6.4(Final) ElasticSearch:6.3.2 Logstash:6.3.2 Kibana:6.3.2 JRE:1.8
星哥玩云
2022/07/27
1.1K0
ELK日志分析系统安装和部署
ELK实时日志管理-系统搭建
Filebeat轻量级的日志传输工具,可以读取系统、nignx、apache等logs文件,监控日志文件,传输数据到Elasticsearch或者Logstash,最后在Kibana中实现可视化。
WindCoder
2018/09/19
1.6K0
ELK实时日志管理-系统搭建
ELK+redis搭建
2.安装logstash 解压后是没有logstash的配置文件的,需要手动创建一个,上面截图的log.conf就是我手动创建的,为了测试,只是配置了简单的标准输入和标准输出,内容如下:
@凌晨
2020/05/28
3730
ELK+redis搭建
Elastic 8.0 二进制单机部署ELKF 四件套(欧拉系统)
Elasticsearch 是一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。Elasticsearch 是用 Java 开发的,并在 Apache 许可证下作为开源软件发布。官方客户端在 Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby 和许多其他语言中都是可用的。Elastic 8.0 版通过改进 Elasticsearch 的矢量搜索功能、对现代自然语言处理模型的原生支持、不断简化的数据上线过程,以及精简的安全防护体验,在速度、扩展幅度、相关性和简便性方面,迎来了一个全新的时代。
Kevin song
2023/02/22
1.1K0
Elastic 8.0 二进制单机部署ELKF  四件套(欧拉系统)
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
随着时间的积累,日志数据会越来越多,当你需要查看并分析庞杂的日志数据时,可通过 Filebeat+Kafka+Logstash+Elasticsearch 采集日志数据到Elasticsearch(简称ES)中,并通过 Kibana 进行可视化展示与分析。
高楼Zee
2021/09/23
2.1K0
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
ElasticSearch实战:Linux日志对接Kibana
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎。
一枚hammer
2018/12/10
2.4K1
ElasticSearch实战:Linux日志对接Kibana
Spring Cloud + ELK 统一日志系统搭建
ELK 是 Elasticsearch、Logstash、Kibana 的简称,这三者是核心套件,但并非全部。
大数据真好玩
2021/01/26
3.4K0
Elastic 技术栈之 Filebeat
Elastic 技术栈之 Filebeat 简介 Beats 是安装在服务器上的数据中转代理。 Beats 可以将数据直接传输到 Elasticsearch 或传输到 Logstash 。 Beats
静默虚空
2018/03/16
2K0
Elastic 技术栈之 Filebeat
ElasticSearch实战:Linux日志对接Kibana
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTFul web接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。ElasticSearch常用于全文检索,结构化检索,数据分析等。
java架构师
2019/02/27
7360
Filebeat快速入门
可能需要额外授予执行权限。命令为:PowerShell.exe -ExecutionPolicy RemoteSigned -File .\install-service-filebeat.ps1
趣学程序-shaofeer
2020/03/30
1.9K0
相关推荐
搭建ELFK日志采集系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档