赞
踩
知乎视频www.zhihu.com
选择题:40
基本操作题:5
简单应用:10/15
综合应用:20
主要是对文本进行处理
基本操作题
format()函数
用符号填充
{序号:填充 对齐 宽度 千分位分隔符(也就是","),精度,类型 }.
a=1234
print("{:+^20}".format(a))
列表处理
#求a=[
编码转换
print ord('a') #97
print chr(97) #a
A=65,a=97,B=66,b=98类似这样。
进制转换
知识点:算法方法转换/format()方法转换。
1.算法方法进行转换
#如果a=1010,用算法的方式把二进制转化为十进制。
#二进制转十进制的数学计算方法是:a(d)=1*2**3+0*2**2+1*2**1+0*2**0
a=input("请输入一个二进制数字:") #取1010字符串长度
s=0
n=len(a)
for i in range(n):
s=s+int(a[0])*2**(len(a)-1)
a=a[1:]
print(s)
2.format()函数方法转换
例如:
a= 1010
print("{:d}".format(a))
print("{:o}".format(a))
print("{:x}".format(a))
结果
统计中文字符个数,词语个数。包含/不包含标点符号。
知识点:len()函数,jieba.lcut()分词,replace( ",/./?","" )替换标点符号
#统计这段话的中文字符和词语字符。(包括/不包括字符)“如果你不止一次梦想一件事,那它肯定会成真的。”
import jieba
s="如果你不止一次梦想一件事,那它肯定会成真的。"
n=len(s) #包括标点符号
m=len(jieba.lcut(s))
x=s.replace(",","").replace("。","") #把标点符号去掉
y=len(x)
print("{},{},{}".format(n,m,y))
虽然结果出来了,但是不知道为什么报错。哎。。。。。。
random库/random函数
#把123作为种子,然后随机输出(1,999)中的10个数字,用逗号隔开。
import random
random.seed(123) #种子
for i in range(10):
print(random.randint(1,999),end=",") #randint(a,b)取的是[a,b]之间的整数,注意都是左右都是闭
#随机输出列表中的某个元素
import random
random.seed(0) #去随机数种子
ls = ['a','b','c','d','e']
i = random.randint(0,5)
print(ls[i])
#另一种方法也可以
import random
random.seed(0) #去随机数种子
ls = ['a','b','c','d','e']
print(random.choice(ls))
斐波那契数列
# f(0)=0 f(1)=1 f(n)=f(n-1)+f(n-2)(n>=2),输出不大于100序列元素
a,b=0,1
while a<=100:
print(a,end=",")
a,b=b,a+b
等差数列
# 输入3个数,分别是a,b,c。a是首项,b公差,c是计数次数。求一个等差数列
a,b,c = eval(input())
ls = []
for i in range(c):
ls.append(a+i*b)
print(ls)
简单应用
turtle库相关的题。https://zhuanlan.zhihu.com/p/138057585zhuanlan.zhihu.com
一:
请写代码替换横线,不修改其他代码,实现以下功能:使用turtle库的turtle.right()函数和turtle.fd()函数绘制一个菱形,边长为200像素,4个内角度数为2个60度和2个120度,效果如图所示。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle
turtle.right(-30)
___(1)___ #turtle.fd(200) //前进200步
turtle.right(60)
turtle.fd(200)
___(2)___ #turtle.right(120) //turtle.right(degree):顺时针移动degree°
turtle.fd(200)
turtle.right(60)
turtle.fd(200)
turtle.right(120)
二:
请写代码替换横线,不修改其他代码,实现以下功能:使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个边长为200的正菱形,菱形4个内角均为90度。效果如下图所示,箭头与下图严格一致。
# 请在______处使用一行代码替换
#
# 注意:请不要修改其他已给出代码
import turtle
turtle.pensize(2)
d = ____(1)____ #-45 //从后面的代码可以看到d代表角度。最开始是-45°的朝向
for i in range(4):
turtle.seth(d)
d += ____(2)____ # 90 //没完成一次直线动作,向左转90°继续下一次。
turtle.fd(____(3)____) #200 //直线行驶步长200
三:
请写代码替换横线,不修改其他代码,实现以下功能:使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个每方向为100像素长度的十字形,效果如图所示。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle
for i in range(4):
turtle.fd(100)
___(1)___(-100) #turtle.fd(-100) //起点在中间,朝向向右,先向右直线运动后,后退回原点,
#再进行下次的运动
___(2)___((i+1)*90) #turtle.seth() //绝对方向角度
四:
请写代码替换横线,不修改其他代码,实现以下功能:使用turtle库的turtle.fd()函数和turtle.seth()函数绘制一个等边三角形,边长为200像素,效果如下图所示。
# 请在______处使用一行代码或表达式替换
#
# 注意:请不要修改其他已给出代码
import turtle as ___(1)___ #t //根据后面的代码可知turtle被命名别名t
for i in range(___(2)): #3 转3次
___(3)___(i*120) #turtle.seth() //由于i一次去0,1,2。所以可以判断是绝对角度
t.fd(200)
字典相关的题
1.选票问题(有效票/无效票)
一:
d={}
n=0
f=open("name.txt") #打开文件
names = f.readlines() #读文件
f.close() #关闭文件
f=open("vote.txt")
votes = f.readlines()
f.close()
for vote in votes: #1.先看选票是否有效。遍历每行,对每行用split()转化为列表形式
ls=vote.split() #如果每行的元素等于1,则有效。
if len(ls)==1:
for name in names: #看选票里面的人是不是在本班级的名单中
if name.count(ls[0])==1: #.count()方法可以统计字符串某个字符出现次数,可选参数
#为在字符串搜索的开始与结束为止。
#我觉得上面这点写的有点麻烦,可以改成下面样子的。
#if len(ls)==1 and ls in names:
# d[ls[:-1]]=d.get(ls[:-1],0)+1
n=n+1
d[ls[0]]=d.get(ls[0],0)+1
bj = list(d.items())
bj.sort(key=lambda x:x[1],reverse=True)
name,score = bj[0]
print("当选班长同学为:{},票数为:{}".format(name,score))
二:
2.统计排序问题
一:
data = input()
age=0
n=0
num=0
while data:
num =num + 1
ls =data.split()
if ls[1]=="男":
n=n+1
age=age+int(ls[2])
data = input()
avg= age/num
print("平均年龄是{:.2f} 男性人数是{}".format(avg,n))
二:
names = input("please input subject name:")
names= names.split() #对字符串进行分割,变成列表
d={} #建立一个空的字典
for name in names:
d[name]=d.get(name,0)+1 #统计列表中学科出现的次数
ls = list(d.items()) #再次转换列表,为排序做准备
ls.sort(key=lambda x:x[1],reverse=True) #对列表进行排序
for k in ls:
print("{}:{}".format(k[0],k[1])) #输出对应形式的格式。
三:
txt = txt.split() #对字符串进行分割,生产列表形式
d= {}
for tname in txt:
d[tname] = d.get(tname,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True) #排序
for k in ls:
print("{}:{}".format(k[0],k[1]))
四:
data = input()
d={}
s = 0
n=0
while data:
dt = data.split()
d[dt[0]]=dt[1]
data=input()
ls = list(d.items())
ls.sort(key=lambda x:x[1],reverse=True)
for i in ls:
s= s+int(i[1])
ave = s/len(ls)
print("{0}{1}\0{2}{3}\0{4}".format(ls[0][0],ls[0][1],ls[len(ls)-1][0],ls[len(ls)-1][1],ave))
3.简单的循环,分支问题,字典/列表问题
一:
#因为题目给的字典太多了,我简单创建一个字典,做相同的步骤。
import random
random.seed(2)
mzdh={'kalaholddd':['8948904759'],'zhubojia':['8938495844']}
name = input('请输入一个人名:')
print("{} {} {}".format(name,mzdh[name][0],random.randint(1000,9999)))
#mzdh[name][0],如果不加[0],就会是列表['8938495844']
运行结果
二:
while True:
s =input("请输入不带数字的文本:")
for i in s:
if i>='0' and i<='9':
break
else:
break
print(len(s))
三:
#列表太长,不想按原题抄写,随便写几个数字。
#求对应元素成绩的和。
ls = [1,2,3,4,5,6,7,8,9]
lt = [2,3,4,5,6,7,8,9,10]
s=0
#来个循环即可
for i in range(9):
s=ls[i]*lt[i]+s
print(s)
综合应用题
一:
https://zhuanlan.zhihu.com/p/142252878zhuanlan.zhihu.com
一:
二:
三:传感器是二进制文件。
四:
5
6
本题考查的是列表索引的使用。可以用循环来统计男性人数,和累积年龄
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
data = input() # 姓名 年龄 性别
s=0 #年龄
i=0 #计次数
n=0 #男性人数
while data:
i=i+1 #记录次数
data = input()
ls=data.split()
s=int(date[2])+s
if ls[1]=="男生"
n+=1
s=s/i
print("平均年龄是{:.2f} 男性人数是{}".format(s,n))python的split()用法小结_weixin_43360384的博客-CSDN博客blog.csdn.net
二:
# 以下代码为提示框架
# 请在...处使用一行或多行代码替换
# 请在______处使用一行代码替换
#
# 注意:提示框架代码可以任意修改,以完成程序功能为准
names=input("请输入各个同学行业名称,行业名称之间用空格间隔(回车结束输入):")
t=names.split()
d = {}
for a in range(len(t)):
d[t[a]]=d.get(t[c],0)+1
#创建字典变量d,利用“d[键]=值”方式作为字典增加新的键值对变量。
#d[w]=d.get(w,0)+1
#使用.get()的方法,可以获得当前字典中w键对应的值,即w出现的次数,如果w不存在,就返回0。
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 按照数量排序
for k in range(len(ls):
zy,num=ls[k]
print("{}:{}".format(zy,num))https://zhuanlan.zhihu.com/p/141430525zhuanlan.zhihu.com
排序sort()函数
txt = open("命运.txt","r").read()
for ch in "。,:?\n“”;\"":
txt = txt.replace(ch,"") #除去标点符号
print(txt)
d = {}
for word in txt:
d[word] = d.get(word,0)+1
ls = list(d.items())
ls.sort(key=lambda x:x[1], reverse=True) # 此行可以按照词频由高到低排序
s= ""
for i in range(10):
s += ls[i][0]
print(s)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。