斐波拉契数列python123_python计算机二级题目分类汇总

知乎视频​www.zhihu.comzhihu-card-default.svg

选择题:40

基本操作题:5

equation?tex=%5Ccases%7Bformat%28%29+%E5%87%BD%E6%95%B0%5Ccr+chr%28%29%3Bord%28%29%E7%BC%96%E7%A0%81%E8%BD%AC%E6%8D%A2%5Ccr+%E8%BF%9B%E5%88%B6%E8%BD%AC%E6%8D%A2+%5Ccr+len%28%29%E5%87%BD%E6%95%B0%EF%BC%88%E5%8F%AF%E4%BB%A5%E6%B5%8B%E9%87%8F%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%AD%97%E7%AC%A6%E4%B8%AA%E6%95%B0%EF%BC%8C%E5%88%97%E8%A1%A8%E5%85%83%E7%B4%A0%E4%B8%AA%E6%95%B0%EF%BC%8C%E5%AD%97%E5%85%B8%E9%94%AE%E5%80%BC%E5%AF%B9%E4%B8%AA%E6%95%B0%E7%AD%89%EF%BC%89%5Ccr+replace%EF%BC%88%2C+%EF%BC%89%E5%87%BD%E6%95%B0+%5Ccr+pow%28%2C%29%E5%87%BD%E6%95%B0+%5Ccr+random%E5%BA%93+random%E5%87%BD%E6%95%B0%E7%9A%84%E4%BD%BF%E7%94%A8%7D

简单应用:10/15

equation?tex=%5Ccases%7Bturtle%E5%BA%93%E5%BA%94%E7%94%A8%EF%BC%88%E7%94%BB%E5%9B%BE%EF%BC%89%5Ccr+%E5%AD%97%E5%85%B8%E7%9B%B8%E5%85%B3%E7%9A%84%E9%A2%98+%5Ccr%7D

综合应用:20

主要是对文本进行处理

equation?tex=%5Ccases+%7Bjieba.lcut%28%29%E5%88%86%E8%AF%8D+%5Ccr+d.pop%28key%2Cdefault%29%E5%88%A0%E9%99%A4key+%5Ccr+strip%E6%96%B9%E6%B3%95%EF%BC%9A%E7%A7%BB%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%A4%B4%E5%B0%BE%E6%8C%87%E5%AE%9A%E7%9A%84%E5%AD%97%E7%AC%A6%E6%88%96%E5%AD%97%E7%AC%A6%E5%BA%8F%E5%88%97%7D

基本操作题

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)

简单应用

equation?tex=%5Ccases%7Bturtle%E5%BA%93%E5%BA%94%E7%94%A8%EF%BC%88%E7%94%BB%E5%9B%BE%EF%BC%89%5Ccr+%E5%AD%97%E5%85%B8%E7%9B%B8%E5%85%B3%E7%9A%84%E9%A2%98+%5Ccr%7D+

turtle库相关的题。https://zhuanlan.zhihu.com/p/138057585​zhuanlan.zhihu.comzhihu-card-default.svg

一:

请写代码替换横线,不修改其他代码,实现以下功能:使用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/142252878​zhuanlan.zhihu.comzhihu-card-default.svg

一:

二:

三:传感器是二进制文件。

四:

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.nete424f39f411876527f3772820277c1a5.png

二:

# 以下代码为提示框架

# 请在...处使用一行或多行代码替换

# 请在______处使用一行代码替换

#

# 注意:提示框架代码可以任意修改,以完成程序功能为准

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/141430525​zhuanlan.zhihu.comzhihu-card-default.svg

排序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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值