信息技术会考操作题python,信息技术考试程序题

大家好,给大家分享一下初中信息技术python编程教学视频,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

一、对迭代器进行切片

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from itertools import islice
#islice(iterable, [start,] stop [, step])  语法
f = open('/var/log/messages','r')
l = islice(f,100,300)     #从100切到300
ll = islice(f,100,None)   #从100切到最后
lll = islice(f,500)       #从开头切到500

备注:如果从中间切片,会对前面的数据造成影响

二、反向迭代以及如何实现反向迭代

#!/usr/bin/env python
#-*- coding:utf-8 -*-

l = [1,2,3,4,5,6]
reversed(l)     #主要是调用 __reversed__  方法

class Floatrange(object):
    def __init__(self,start,end,step):
        self.start = start
        self.end = end
        self.step = step
    def __iter__(self):
        t = self.start
        while t < self.end:
            yield t
            t += self.step
    def __reversed__(self):
        t = self.end
        while t > self.start:
            yield t
            t -= self.step


#调用
aa = Floatrange(1.0,4.0,0.5)
for i in aa:    #正向
    print(i)
print(''.center(20,'='))
for x in reversed(aa):   #反向
    print(x)

三、在一个for循环中迭代多个对象
1、并行(zip函数,它能将多个可迭代对象合并,每次迭代返回一个元组)
例如: 统计每个学生成绩(语文、数学、英语)总和

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from random import randint
#随机生成语文数学英语成绩,以每个班30人为例
chinese = [randint(60,100) for _ in range(30)]
math = [randint(60,100) for _ in range(30)]
english = [randint(60,100) for _ in range(30)]

total = []
for c,m,e in zip(chinese,math,english):
    total.append(c+m+e)
print(total)

备注:zip[chinese,math,english]后面加可迭代对象就会生成新的可迭代对象,形式如下[(1,2,3),(),()…]

2、串行(itertools._chain函数,它能将多个迭代对象连接)
例如: 某年级有3个班,每次考试的语文成绩分别存储在3个表中,依次迭代每个列表,统计成绩高于90的人数。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from random import randint
from collections import _chain   #在python2.7种是(from collections import chain)
t1 = [randint(60,100) for _ in range(30)]
t2 = [randint(60,100) for _ in range(42)]
t3 = [randint(60,100) for _ in range(36)]

count = 0
for x in _chain(t1,t2,t3):
    if x > 90:
        count += 1
print(count)

四、统计出现频率比较高的三个元素

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from collections import Counter
from random import randint
data = [randint(0,20) for _ in range(30)]

#方法一:通过字典的key进行判断
# dic = dict.fromkeys(data,0)
# for x in data:
#     dic[x] += 1
# print(dic)

#方法二:调用collections 标准库里面的Counter方法
c1 = Counter(data)
a = c1.most_common(3)
print(a)

五、对字典的值values进行排序
思路:先将zip函数将字典的key和value反转,然后对新key(也就是value)进行排序即可
思路2:利用内置函数sorted

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from random import randint
d = {x: randint(60,100) for x in 'abegxg'}
t = zip(d.values(),d.keys())                 #zip函数将字典的key和value反转,然后再进行排序
print(sorted(d.items(),key=lambda x:x[1]))   #内置函数

六、取字典里面的公共key

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from random import randint,sample
sample('abcderg',randint(3,6))       #随机取样sample,从'abcderg'中随机取出三到六个不等的字符串
s1 = {x:randint(1,4) for x in sample('abcderg',randint(3,6))}
s2 = {x:randint(1,4) for x in sample('abcderg',randint(3,6))}
s3 = {x:randint(1,4) for x in sample('abcderg',randint(3,6))}

解决方法思路:
①使用字典的viewkeys() 放大,得到一个自定keys的集合
②使用map函数,得到所有字典的keys的集合
③使用reduce函数,取得所有字典的keys的集合的交集

#方法一:
#将字典1的key循环,然后判断字典2和字典3中是否有
res = []
for k in s1:
    if k in s2 and k in s3:
        res.append(k)
print(res)

#方法二:
#字典viewkeys()方法,在python3里面变成(from collections import _OrderedDictKeysView)
s1.viewkeys() & s2.viewkeys() & s3.viewkeys()

#方法三:利用reduce函数
reduce(lambda a,b : a & b,map(dict.viewkeys,[s1,s2,s3]))   #这个只针对python2有用

七、历史记录命令

#!/usr/bin/env python
#-*- coding:utf-8 -*-

from collections import deque
q = deque([],5)      #创建容量为5的队列,如果队列里面的值超过五个,就会自动把前面的剔除
q.append('a')

八、字符串的操作
1、以什么开头,什么结尾,多个匹配时参数用元组

ss = 'abcedfg'
ss.startswith('a')
ss.endswith('b')    
#或者 
[name for name in os.listdir('.') if name.endswith(('.txt','.py'))]  #以.txt和.py结尾

2、字符串分割

re.split(r'[\t,./:_;|" "]+',ss)   #一次性分割完成
ss.split('\t') --> t = [] & map(lambda x : t.append(x.split(',')),ss.split('\t'))  #只能一次次来

3、调整字符串日期的格式
将日期格式调整:‘2017-05-23 ==> 05/23/2017’
思路:使用正则re.sub()做替换,利用正则表达式捕获组,捕获每个部分内容,在替换字符串中调整各个捕获组的顺序

#!/usr/bin/env python
#-*- coding:utf-8 -*-

log = open('/var/log/messages','r').read()
print re.sub('(\d{4})-(\d{2})-(\d{2})',r'\2/\3/\1',log)    #()为捕获组
#print re.sub('(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})',r'\g<month>/\g<day>/\g<year>',log)      #给捕获组起名字,后面直接用名字调用

4、字符串拼接

①''.join()   #join里面添加一个可迭代对象,前面是分隔符
② + 号       #这个慎用

#如果一个列表中既有字符串,又有整型,应将整型转化为字符串
ll = ['abc',12,459,'xyz']
'-'.join(str(x) for x in ll)    #(str(x) for x in ll)   #这样就变成了一个生成器对象

5、字符串的左,右,居中对齐

str.ljust()
str.rjust()
str.center()
max(map(len,aaa.keys()))          #查看每一个key的长度
format()   '<20'  '>20'  '^20'    #左右居中对齐

例子:
s = 'abc'
s.ljust(20)        #'abc                 '
s.ljust(20,'=')   #'abc================='

format(s,'<20')    #左对齐
format(s,'>20')    #右对齐
format(s,'^20')    #居中

九、导出一个项目用到的模块

#进入到该项目目录下,执行一下命令
pip freeze > requirement.txt

#结果
aiohttp==3.4.4
amqp==2.3.2
asn1crypto==0.24.0
async-timeout==3.0.1
asyncio==3.4.3
attrs==18.2.0
Automat==0.7.0
baidu==0.2
baidu-aip==2.2.10.0
beautifulsoup4==4.6.3
billiard==3.5.0.4
celery==4.2.1
certifi==2018.10.15
cffi==1.11.5
chardet==3.0.4
constantly==15.1.0
cryptography==2.4.2
cssselect==1.0.3
cycler==0.10.0
Django==2.1.5
gevent==1.3.7
greenlet==0.4.15
hyperlink==18.0.0
idna==2.7
idna-ssl==1.1.0
incremental==17.5.0
jieba==0.39
kiwisolver==1.0.1
kombu==4.2.1
lxml==4.2.5
matplotlib==3.0.2
multidict==4.4.2
nose==1.3.7
numpy==1.15.4
pandas==0.23.4
parsel==1.5.1
Pillow==5.3.0
pyasn1==0.4.4
pyasn1-modules==0.2.2
pycparser==2.19
PyDispatcher==2.0.5
PyHamcrest==1.9.0
pymongo==3.7.2
PyMySQL==0.9.3
pyOpenSSL==18.0.0
pyparsing==2.3.0
pyquery==1.4.0
python-dateutil==2.7.5
pytz==2018.7
pywin32==224
queuelib==1.5.0
redis==3.2.1
requests==2.20.1
Scrapy==1.5.1
scrapy-redis==0.6.8
selenium==3.14.1
service-identity==18.1.0
six==1.11.0
SQLAlchemy==1.2.15
style==1.1.0
Twisted==18.9.0
update==0.0.1
urllib3==1.23
vine==1.1.4
w3lib==1.19.0
wordcloud==1.5.0
xlrd==1.2.0
xlwt==1.3.0
yarl==1.2.6
zope.interface==4.6.0
  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值