精华内容
下载资源
问答
  • python实验六

    2020-12-21 10:05:38
    面向对象设计还得学习 1.设计一个简单的购房商贷月供计算器类,按照以下公式计算总利息和每月还款金额: 总利息=贷款金额*利率 每月还款金额 = (贷款金额+总利息)/贷款年限 贷款年限不同利率也不同,这里规定只有...
  • python 实验六 列表与元组(上)

    万次阅读 多人点赞 2021-04-20 16:35:43
    1.假设有三个列表:lst_who=[“小马”,“小羊”,“小鹿”],lst_where=[“草地上”,“电影院”,“家里”],lst_what=[“看电影”,“听故事”,“吃晚饭”]。试编写程序,随机生成三个0-2范围内的整数,将其作为索引...

    1.假设有三个列表:lst_who=[“小马”,“小羊”,“小鹿”],lst_where=[“草地上”,“电影院”,“家里”],lst_what=[“看电影”,“听故事”,“吃晚饭”]。试编写程序,随机生成三个0-2范围内的整数,将其作为索引分别访问三个列表中的对应元素,然后进行造句。例如,随机生成三个整数分别为1,0,2,则输出句子“小羊在草地上吃晚饭”。

    import random
    lst_who=["小马","小羊","小鹿"]
    lst_where=["草地上","电影院","家里"]
    lst_what=["看电影","听故事","吃晚饭"]
    a,b,c=random.randint(0,2),random.randint(0,2),random.randint(0,2)
    sentence=lst_who[a]+"在"+lst_where[b]+lst_what[c]
    print(sentence)
    
    
    

    #输出样例

    小鹿在电影院听故事

    2.编写程序,实现以下功能:
    (1)创建一个列表,依次存放每个月对应的天数。假设2月份的天数固定为28天。
    (2)根据用户输入的月份查询该月的天数并输出。

    lst_monthdays=[31,28,31,30,31,30,31,31,30,31,30,31]
    month=eval(input("请输入月份:"))
    while month!=0:
        print("{}月份有{}天!".format(month,lst_monthdays[month-1]))
        month=eval(input("请输入月份:"))
    print("程序结束!")
    
    

    #输出样例

    4月份有30天!

    3.斐波纳契数列又称黄金分割数列、兔子数列,其第1、2项均为1,从第3项开始每一项都是前两天之和,即1,1,2,3,5,8,13,21,34,…。试编写程序,利用列表计算斐波纳契数列前30项,并输出。

    lst=[1,1]
    for i in range(2,30):
        lst.append(lst[i-1]+lst[i-2])
    print(lst)
    

    #输出结果

    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040]

    4.假设列表lst_busstop=[“龙江新城市”,“阳光广场”,“汉江路”,“嫩江路”,“清凉山公园”,“拉撒路”,“五台山”,“莫愁路”],存放了某公交线路途径的公交站名。试编写程序,根据用户输入的起始站和终点站,计算需要途径的站数并将结果输出。例如,当输入起始站为“汉江路”,终点站为“五台山”时,输出内容为“从汉江路站前往五台山站需要4站路”;当输入起点站为“五台山”,终点站为“汉江路”时,输出“您需要称作反方向路线”。

    lst_busstop=["龙江新城市","阳光广场","汉江路","嫩江路","清凉山公园","拉萨路","五台山","莫愁路"]        
    startStop=input("请输入起点站:")
    endStop= input("请输入终点站:")
    startIndex=lst_busstop.index(startStop)
    endIndex=lst_busstop.index(endStop)
    if startIndex>endIndex:
        print("您需要乘坐反方向线路。")
    else:
        print("从{}站前往{}站需要{}站。".format(startStop,endStop,endIndex-startIndex))
    
    
    

    #输出结果

    请输入起点站:五台山
    请输入终点站:汉江路
    您需要乘坐反方向线路。

    5.假设列表lst_student=[“001”,“李梅”,19,“002”,“刘祥”,20,“003”,“张武”,18],依次存放了每位学生的学号、姓名、年龄。试编写程序,实现以下功能:
    (1)在列表末尾添加表6-1中的学生信息。

    表6-1
    学号 姓名 年龄
    004 刘宁 20
    006 梁峰 19

    (2)在列表适当位置添加表6-2的学生信息。

    表6-2
    学号 姓名 年龄
    005 林歌 20

    (3)输出学号为003的学生信息。
    (4)输出所有学生的姓名。
    (5)输出所有学生的平均年龄。

    lst_student=["001","李梅",19,"002","刘祥",20,"003","张武",18]
    lst_new=["004","刘宁",20,"006","梁峰",19]
    lst_student.extend(lst_new)
    lst_student.insert(lst_student.index("006"),"005")
    lst_student.insert(lst_student.index("006"),"林歌")
    lst_student.insert(lst_student.index("006"),20)
    print(lst_student[lst_student.index("003"):lst_student.index("003")+3])
    print("所有学生的姓名:",lst_student[1::3])
    lst_age=lst_student[2::3]
    print("所有学生的平均年龄:{:.1f}".format(sum(lst_age)/len(lst_age)))
    
    

    #输出结果

    [‘003’, ‘张武’, 18]
    所有学生的姓名: [‘李梅’, ‘刘祥’, ‘张武’, ‘刘宁’, ‘林歌’, ‘梁峰’]
    所有学生的平均年龄:19.3

    6.假设有列表lst_student=[[“001”,“李梅”,19],[“002”,“刘祥”,20],[“003”,“张武”,18]],依次存放了每名学生的学号,姓名和年龄。试编写程序,实现以下功能:
    (1)在列表末尾添加表6-1中学生信息。
    (2)在列表适当位置添加表6-2中学生信息。
    (3)输出学号为003的学生信息。
    (4)输出所有学生的姓名。
    (5)输出年龄大于19的所有学生信息。

    lst_student=["001","李梅",19,"002","刘祥",20,"003","张武",18]
    lst_new=["004","刘宁",20,"006","梁峰",19]
    lst_student.extend(lst_new)
    lst_student=[["001","李梅",19],["002","刘祥",20],["003","张武",18]]
    lst_new=[["004","刘宁",20],["006","梁峰",19]]
    lst_student.extend(lst_new)
    lst_student.insert(4,["005","林歌",20])
    print("学号为003的学生信息:",lst_student[2])
    print("所有学生的姓名:",[x[1] for x in lst_student])
    print("年龄大于19的所有学生的信息:",[x for x in lst_student if x[2]>19])
    
    

    #输出结果

    学号为003的学生信息: [‘003’, ‘张武’, 18]
    所有学生的姓名: [‘李梅’, ‘刘祥’, ‘张武’, ‘刘宁’, ‘林歌’, ‘梁峰’]
    年龄大于19的所有学生的信息: [[‘002’, ‘刘祥’, 20], [‘004’, ‘刘宁’, 20], [‘005’, ‘林歌’, 20]]

    7.甲、乙、丙、丁四人中有一人做了好事不留姓名。请大家编写程序,根据以下线索找出做好事的人。
    甲:不是我
    乙:是丙
    丙:是丁
    丁:丙说的不对
    其中三人说的是真话,一人说的是假话。

    lst=['甲','乙','丙','丁']
    for x in lst:
        if (x!='甲') + (x=='丙')+ (x=='丁') +(x!='丁')==3:
            print(x)
            break
    
    

    #输出结果

    8.在一次数学竞赛中,A、B、C、D、E五名同学分别获得了前五名(假设无并列名次)。小敏问他们分别是第几名,他们的回答如下:
    A:第二名是D,第三名是B
    B:第二名是C,第四名是E
    C:第一名是E,第五名是A
    D:第三名是C,第四名是A
    E:第二名是B,第五名是D
    他们每个人只说对了一半,试编写程序,帮小敏猜一猜他们的真实名次。

    import random
    ls = list('ABCDE')
    print(ls)
    while True:
        random.shuffle(ls)
        if (ls[1]=='D') + (ls[2]=='B') == 1\
        and (ls[1]=='C') + (ls[3]=='E') == 1\
        and (ls[0]=='E') + (ls[4]=='A') == 1\
        and (ls[2]=='C') + (ls[3]=='A') ==1\
        and (ls[1]=='B') + (ls[4]=='D') ==1:
            print(ls)
            break
    
    

    #输出结果

    ['A', 'B', 'C', 'D', 'E']
    ['E', 'C', 'B', 'A', 'D']
    

    9.编写程序,使用列表存放十名学生的姓名,并将列表结果输出。
    (1)学生姓名由用户依次输入
    (2)输入时有提示语句,如“请输入第一名学生的姓名”。

    lst_studentname=[]
    for i in range(1,11):
        name=input("请输入第{}名学生的姓名:".format(i))
        lst_studentname.append(name)
    print(lst_studentname)
    
    
    

    #输出样例 随便输十个名字就可以

    请输入第1名学生的姓名:张三
    请输入第2名学生的姓名:李四
    请输入第3名学生的姓名:王五
    请输入第4名学生的姓名:小虎
    请输入第5名学生的姓名:小明
    请输入第6名学生的姓名:刘鑫
    请输入第7名学生的姓名:张扬
    请输入第8名学生的姓名:谢旭
    请输入第9名学生的姓名:胡图图
    请输入第10名学生的姓名:魏延
    [‘张三’, ‘李四’, ‘王五’, ‘小虎’, ‘小明’, ‘刘鑫’, ‘张扬’, ‘谢旭’, ‘胡图图’, ‘魏延’]

    10.修改题9的程序,每次都将新输入的姓名添加在列表开始的位置。

    lst_studentname=[]
    for i in range(1,11):
        name=input("请输入第{}名学生的姓名:".format(i))
        lst_studentname.insert(0,name)
    print(lst_studentname)
    
    

    请输入第1名学生的姓名:张三
    请输入第2名学生的姓名:李四
    请输入第3名学生的姓名:王五
    请输入第4名学生的姓名:宋江
    请输入第5名学生的姓名:小熊
    请输入第6名学生的姓名:小明
    请输入第7名学生的姓名:小李子
    请输入第8名学生的姓名:李浩
    请输入第9名学生的姓名:王菲
    请输入第10名学生的姓名:李杰
    [‘李杰’, ‘王菲’, ‘李浩’, ‘小李子’, ‘小明’, ‘小熊’, ‘宋江’, ‘王五’, ‘李四’, ‘张三’]

    11.假设列表lst_info=[[“李玉”,“男”,25],[“金忠”,“男”,23],[“刘妍”,“女”,21],[“莫心”,“女”,24],[“沈冲”,“男”,28]],存放了某单位每个员工的基本信息(包括姓名、性别和年龄)。试编写程序,实现将用户要求的员工信息从列表删除。
    (1)需要删除的员工姓名由用户输入。
    (2)若用户输入的员工姓名在列表中存在,则执行删除操作;若不存在,则给出相应的提示。
    (3)程序可循环执行,当用户输入姓名为“0”时,循环结束。

    lst_info=[["李玉","男",25],["金忠","男",23],["刘妍","女",21],["莫心","女",24],["沈冲","男",28]]
    name=input("请输入您要删除信息的员工姓名:")
    while name!="0":
        for info in lst_info:
            if info[0]==name:
                lst_info.remove(info) 
                print("删除后的列表:{}".format(lst_info))
                break
        else:
            print("列表中不存在该员工姓名!")
        name=input("请输入您要删除信息的员工姓名:")
    print("程序结束!")
    
    

    #输出样例

    请输入您要删除信息的员工姓名:李玉
    删除后的列表:[[‘金忠’, ‘男’, 23], [‘刘妍’, ‘女’, 21], [‘莫心’, ‘女’, 24], [‘沈冲’, ‘男’, 28]]
    请输入您要删除信息的员工姓名:张三
    列表中不存在该员工姓名!
    请输入您要删除信息的员工姓名:0
    程序结束!

    题目太多下次再更

    展开全文
  • python实验六 列表与元组 (下)

    千次阅读 多人点赞 2021-04-22 10:18:47
    12.设有列表lst_odd=[1,3,5,7,9]和列表lst_even=[2,4,6,8,10]。试编写程序,将两个列表合并成一个新的列表,并将新列表按照元素的大小降序排列。不改变列表的元素。 lst_odd=[1,3,5,7,9] lst_even=[2,4,6,8,10] ...

    12.设有列表lst_odd=[1,3,5,7,9]和列表lst_even=[2,4,6,8,10]。试编写程序,将两个列表合并成一个新的列表,并将新列表按照元素的大小降序排列。不改变列表的元素。

    lst_odd=[1,3,5,7,9]
    lst_even=[2,4,6,8,10]
    newlist=lst_odd.copy()
    newlist.extend(lst_even)
    newlist.sort()
    print(newlist)
    
    

    #输出结果

    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

    13.编写程序,对用户输入的英文字符串中出现的英文字母进行提取(不区分大小写,重复字母只记一次),并将提取的结果按照字母表升序排列后输出。例如,用户输入“I miss you.”,程序输出“i,m,o,s,u,y”或“I,M,O,S,U,Y”。

    s=input("请输入一段英文:")
    s=s.lower()
    lst=[]
    for c in s:
        if c.isalpha():
            if c not in lst:
                lst.append(c)
    lst.sort()
    print(lst)
    
    

    #输出样例

    请输入一段英文:I miss you
    ['i', 'm', 'o', 's', 'u', 'y']
    

    14.编写程序,生成一年包含20个两位随机整数的列表,将其前十个元素升序排列,后十个元素降序排列。

    import random
    a=range(10,100)
    lst=random.sample(a,20)
    lst1=sorted(lst[:10])
    lst[:10]=lst1
    lst2=sorted(lst[10:],reverse=True)
    lst[10:]=lst2
    print(lst)
    
    

    #输出样例

    [12, 17, 33, 49, 51, 60, 61, 69, 81, 90, 79, 66, 64, 59, 55, 53, 43, 39, 30, 22]

    15.编写程序,将用户输入的英文语句中的单词(忽略标点符号)进行逆序排列后输出。例如:用户输入“How are you”,则程序输出“you are How”。

    def sentence_reverse(s):
        lst=s.split(" ")
        return " ".join(lst[-1::-1])
    
    s1=input("请输入一段英文:")
    s2=sentence_reverse(s1)
    print(s2)
    
    

    #输出样例

    请输入一段英文:How are you
    you are How

    16.假设已有列表lst_floor=[1,4,2,5,7,3],存放了某电梯在一段时间内经过的楼层。试编写程序,实现以下功能。
    (1)输出电梯的运行路线(“↑”表示上行一层,“↓”表示下行一层),结果如下:↑↑↑↓↓↑↑↑↑↑↓↓↓↓

    lst_floor=[1,4,2,5,7,3]
    for i in range(1,len(lst_floor)):
        end=lst_floor[i]
        start=lst_floor[i-1]
        if start<end:
            print("↑"*(end-start),end="")
        else:
            print("↓"*(start-end),end="")
    
    

    #输出结果

    ↑↑↑↓↓↑↑↑↑↑↓↓↓↓

    (2)假设运行路线为↑↑↓↓↓↑↑↓↑↑↑↑,且已知初始楼层为2楼,输出经过的各楼层,结果如下:2,3,4,3,2,1,2,3,2,3,4,5,6

    route="↑↑↓↓↓↑↑↓↑↑↑↑"
    lst_floor=[2]
    floor=2
    for ch in route:
        if ch=="↑":
            floor+=1
        else:
            floor-=1
        lst_floor.append(floor)
    print(",".join([str(x) for x in lst_floor]))
    
    

    #输出结果

    2,3,4,3,2,1,2,3,2,3,4,5,6

    17.假设已有列表lst_sides=[3,4,5,6,6,6,4,4,3],依次存放了三个三角形的三条边长,试编写程序,利用海伦公式计算每个三角形的面积,并将结果存入列表lst_area。

    lst_sides=[3,4,5,6,6,6,4,4,3]
    lst_area=[]
    for i in range(0,len(lst_sides),3):
        a,b,c=lst_sides[i:i+3]
        p=(a+b+c)/2
        s=p*(p-a)*(p-b)*(p-c)
        lst_area.append(s)
    print(lst_area)
    
    

    #输出结果

    [36.0, 243.0, 30.9375]

    18.假设有字符串s=“语文:80,数学:82,英语:90,物理:85,化学:88,美术:80”,存放了某个学生的期末成绩。试编写程序,计算该学生所有科目的总分和平均分(保留一位小数)。

    s="语文:80,数学:82,英语:90, 物理: 85,化学:88,美术:80"
    lst_score=[]
    for x in s.split(","):
        print(type(x))
        print(x)
        i=x.index(":")+1
        score=int(x[i:])
        lst_score.append(score)
    zf=sum(lst_score)
    print("总分:{}\n平均分:{:.1f}".format(zf,zf/len(lst_score)))
    
    

    #输出结果

    <class ‘str’>
    语文:80
    <class ‘str’>
    数学:82
    <class ‘str’>
    英语:90
    <class ‘str’>
    物理: 85
    <class ‘str’>
    化学:88
    <class ‘str’>
    美术:80
    总分:505
    平均分:84.2

    19.假设已有列表lst=[(“triangle”,“shape”),(“red”,“color”),(“square”,“shape”),(“yellow”,“color”),(“green”,“color”),(“circle”,“shape”)],其中每个元素都是一个元组。元组中的每一个元素表示值,第二个元素表示标签。试编写程序,完成以下功能:
    (1)将列表lst中的元素按照标签排序后输出。
    (2)将所有的颜色值从列表lst中提取出来,存入列表lst_colors,并将该列表输出。

    lst=[("triangle","shape"),("red","color"),("square","shape"),("yellow","color"),("green","color"),("circle","shape")]
    lst_new=[ [x[1],x[0]] for x in lst ]
    print(lst_new)
    lst_sort=sorted(lst_new)
    print("按照标签排序后的列表:{}".format(lst_sort))
    lst_colors=[x[1] for x in lst_sort if x[0]=="color"]
    print("颜色列表:{}".format(lst_colors))
    
    

    #输出结果

    [[‘shape’, ‘triangle’], [‘color’, ‘red’], [‘shape’, ‘square’], [‘color’, ‘yellow’], [‘color’, ‘green’], [‘shape’, ‘circle’]]
    按照标签排序后的列表:[[‘color’, ‘green’], [‘color’, ‘red’], [‘color’, ‘yellow’], [‘shape’, ‘circle’], [‘shape’, ‘square’], [‘shape’, ‘triangle’]]
    颜色列表:[‘green’, ‘red’, ‘yellow’]

    20.假设列表lst_suit=[“黑桃”,“红桃”,“梅花”,“方块”],存放了扑克牌的花色。列表lst_face=[“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”],存放了扑克牌的牌面大小,其元素已按照牌面大小升序排列。试编写程序,完成以下功能。
    (1)利用列表生成式,将以上两个列表进行元素搭配,生成一个新的列表,存放所有牌面(不考虑大小王)。新列表lst的内容为:[“3黑桃”,“3红桃”,“3梅花”,“3方块”,“4黑桃”,“4红桃”,“4梅花”,“4方块”,…,“A黑桃”,“A红桃”,“A梅花”,“A方块”,“2黑桃”,“2红桃”,“2梅花”,“2方块”]。
    (2)使用random库的shuffle()函数将列表lst中的元素次序打乱。
    (3)用户与计算机进行“抽牌比大小”游戏。游戏规则如下。
    用户输入序号(范围为0~51)。程序根据序号在列表lst中读取牌面。计算机抽牌由程序自动完成(通过random库中randint()函数随机生成序号)。将用户抽取的牌面与计算机抽取的牌面进行大小比较(不考虑花色),并将结果输出。三种输出内容对照如下:“恭喜,您输了!” “很遗憾,您输了” “咱们平手了!”

    import random
    lst_suit=["黑桃","红桃","梅花","方块"]
    lst_face=["3","4","5","6","7","8","9","10","J","Q","K","A","2"]
    lst=[x+y for x in lst_face for y in lst_suit]
    random.shuffle(lst)
    idx_user = int(input("请您抽一张牌(0~51):"))
    card_user=lst[idx_user]
    print("您抽到的牌是:{}".format(card_user))
    idx_computer=random.randint(0,51)
    card_computer=lst[idx_computer]
    print("电脑抽到的牌是:{}".format(card_computer))
    val_user=lst_face.index(card_user[0])
    val_computer=lst_face.index(card_computer[0])
    if val_user>val_computer:
        print("恭喜,您赢了!")
    elif val_user<val_computer:
        print("很遗憾,您输了!")
    else:
         print("咱们平手了!")
    
    

    #输出样例

    请您抽一张牌(0~51):8
    您抽到的牌是:7红桃
    电脑抽到的牌是:A梅花
    很遗憾,您输了!

    21.学校举办朗读比赛,邀请了10位评委为每一名参赛选手的表现打分。假设列表lst_score=[9,10,8,9,10,7,6,8,7,8],存放了某一位参赛选手的所有评委打分。试编写程序,根据以下规则计算该参赛选手的最终得分:
    (1)去掉一个最高分
    (2)去掉一个最低分
    (3)最终得分为剩下8和分数的平均值

    lst_score=[9, 10, 8, 9, 10, 7, 6, 8, 7, 8]
    lst_score.sort()
    lst_score.pop()
    lst_score.pop(0)
    print("该选手的最终得分为{}".format(sum(lst_score)/len(lst_score)))
    

    #输出结果

    该选手的最终得分为8.25

    22.假设列表lst_weather中存放了一周的天气情况(包括最低气温、最高气温、天气状况、风力和空气质量质量等级)。试编写程序,统计一下数据:
    (1)空气质量为优的天数
    (2)风力低于3级且最高气温不超过25℃的天数
    (3)平均气温低于20℃的天数
    测试数据:lst_weather=[[“周一”,“16℃”,“26℃”,“多云”,“1级”,“优”],[“周二”,“17℃”,“27℃”,“晴”,“2级”,“优”],[“周三”,“16℃”,“28℃”,“晴”,“3级”,“优”],[“周四”,“16℃”,“25℃”,“阴”,“2级”,“良”],[“周五”,“15℃”,“24℃”,“阴”,“2级”,“良”],[“周六”,“15℃”,“25℃”,“晴”,“3级”,“优”],[“周日”,“14℃”,“23℃”,“小雨”,“3级”,“良”]]

    lst_weather=[["周一", "16℃", "26℃","多云","1级","优"],[ "周二" ,"17℃", "27℃","晴","2级","优"],[ "周三","16℃", "28℃","晴","3级","优"],[ "周四","16℃", "25℃","阴","2级","良"],[ "周五","15℃", "24℃","阴","2级","良"],[ "周六", "15℃", "25℃","晴","3级","优"],[ "周日","14℃", "23℃","小雨","3级","良"]]
    number_condition1=[x[0] for x in lst_weather if x[5]=="优"]
    print("空气质量为优的天数:{},它们分别是:{}".format(len(number_condition1),",".join(number_condition1)))
    number_condition2=[x[0] for x in lst_weather if (int(x[2][:-1])<=25 and int(x[4][:-1])<3)==True]
    print("风力低于3级且最高气温不超过25℃的天数:{},它们分别是:{}".format(len(number_condition2),",".join(number_condition2)))
    number_condition3=[x[0] for x in lst_weather if (int(x[1][:-1]) + int(x[2][:-1]))/2<20]
    print("平均气温低于20℃的天数:{},它们分别是:{}".format(len(number_condition3),",".join(number_condition3)))
    
    

    #输出结果

    空气质量为优的天数:4,它们分别是:周一,周二,周三,周六
    风力低于3级且最高气温不超过25℃的天数:2,它们分别是:周四,周五
    平均气温低于20℃的天数:2,它们分别是:周五,周日

    展开全文
  • 本次测试包含了绝大部分Python的正则表达式的操作方式 下面为测试源代码: #!/usr/bin/python3 # -*- coding:UTF-8 -*- import re; # 签名的字符:r,表示将该字符串标记为原始字符串,它不包括转义字符 test_str = '...

    本次测试包含了绝大部分Python的正则表达式的操作方式

    下面为测试源代码:
    #!/usr/bin/python3
    # -*- coding:UTF-8 -*-
    import re;
    
    # 签名的字符:r,表示将该字符串标记为原始字符串,它不包括转义字符
    test_str = '415-555-0001 My number is 415-555-4221';
    
    # 【简单匹配提取】
    reg_1 = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d');
    mo = reg_1.search(test_str);  # 如果没有匹配到则返回:None
    print('我的电话号码是:' + mo.group());  # 415-555-4242 【匹配电话号码,并返回相应的号码】
    
    # 【分组匹配提取】【可以得到多个提取的文本】
    reg_2 = re.compile(r'(\d\d\d)-(\d\d\d\-\d\d\d\d)');
    mo_2 = reg_2.search(test_str);
    # print(mo_2.groups());  # (415,55-4221)
    # print(mo_2.group());  # 匹配全部:415-555-4221
    # print(mo_2.group(0));  # 匹配全部:415-555-4221
    # print(mo_2.group(1), mo_2.group(2));  #:415 555-4221,从左到右,开始匹配,
    # 【使用转义符】
    reg_3 = re.compile(r'(\(\d\d\d\))-(\d\d\d-\d\d\d\d)');
    test_str_2 = 'My number is (415)-555-4221';
    mo_3 = reg_3.search(test_str_2);
    # 打印结果,类似如上分组匹配输出;
    
    
    # 【使用管道匹配多个分组】
    # 将匹配:Batman 或者Tina Fey,但只把第一匹配到的文本作为对象返回
    # reg_4 = re.compile(r'Batman|Tina Fey');
    # mo_4 = reg_4.search('Batman and Tina Fey');
    # print(mo_4.group());  # Batman
    #
    # # 【使用问号(?)实现可选匹配[]】
    # reg_5 = re.compile(r'Bat(wo)?man');  # ? 匹配零次或者一次
    # mo_5 = reg_5.search('The Batwoman Adventures of Batman');
    # print(mo_5.group())  # Batwoman 只以第一次匹配到的文本返回
    #
    # #【 使用星号(*)匹配零次或多次】
    # reg_6 = re.compile(r'Bat(wo)*man');
    # mo_6 = reg_6.search('The Batwoman Adventures of Batman');
    # print(mo_6.group());  # Batwoman,只以第一次匹配到的文本返回
    
    # 【使用加号(+)匹配一次或多次】
    # reg_7 = re.compile(r'Bat(wo)+man');
    # mo_7 = reg_7.search('wo The Batwowowoman Adventures of Batman');
    # print(mo_7.group());  # Batwowowoman,只以第一次匹配到的文本返回
    
    
    # 【使用括号匹配】
    # # 备注:Python所有的正则都是贪心匹配的,如果需要非贪心匹配在大括号后面加上?
    # reg_8 = re.compile(r'(Ha){2,4}?');
    # mo_8 = reg_8.search('This HaHaHaHas OK');
    # print(mo_8.group());  # HaHaHaHa 只以第一次匹配到的文本返回
    
    # 【findall()】提取匹配到的所有内容:匹配到的内容,以列表的形式返回;
    # reg_9 = re.compile(r'\d\d\d-\d\d\d\d');
    # mo_9 = reg_9.findall('125-7894 This Ok is 789-1451');
    # print(mo_9);  # ['125-7894', '789-1451']
    
    # \d 0-9的数字
    # \D 除0-9之外的任何字符
    # \w 任何字母,数字,下划线
    # \W 除字母,数字,下划线之后的任何字符
    # \s 空格,制表符,换行符
    # \S 除空格,制表符,换行符之外的任何字符
    # 'r[aeionsde]' #匹配这些字符,'r[^aldjlass]' #匹配这些字符之外的任何字符
    
    # 【使用.通匹配符】
    # reg_10 = re.compile(r'.at');
    # mo_10 = reg_10.search('Hat,cat,oat');
    # print(mo_10.group());#Hat
    
    
    # # 【使用 .*  匹配任意字符】
    # reg_11 = re.compile(r'.*at');
    # mo_11 = reg_11.search('Hat,cat,oat');  # 匹配整个字符
    # print(mo_11.group());  # Hat,cat,oat
    
    
    # 【使用 .*  匹配任意字符,如果添加re.DOTALL,就可以让句点字符匹配所有字符。即包含换行符后面的字符】
    # reg_12 = re.compile(r'.*at', re.DOTALL);#如果同时用有多个参数,则用管道符号如:re.DOTALL|re.I;
    # mo_12 = reg_12.search('Hat,cat\nssoat');  # 匹配整个字符
    # print(mo_12.group());  # Hat,cat ssoat(会自动换行显示)
    
    #【不区分大小写】,re.compile(r'\w',re.I),传入re.IGNORECASE或re.I,则可以不区分大小写
    
    
    #【替换字符串】通过正则的方式-替换字符串sub()
    # nameRegex=re.compile(r'Agent \w+');
    # res=nameRegex.sub('Cosumer','Agent Alice gave the secret documents to Agent Bob');
    # print(res);#Cosumer gave the secret documents to Cosumer
    
    展开全文
  • 1.请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的前n个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮...

    1.请统计hamlet.txt文件中出现的英文单词情况,统计并输出出现最多的前n个单词,注意:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

    (1) 单词不区分大小写,即需将大写转换成小写;‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

    (2) 请在文本中剔除如下特殊符号:!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

    (3) 输出10个单词和其出现次数,每个单词一行;‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

    (4) 输出单词为小写形式。

    此题不涉及编码转换,若想指定编码 可在开始加上

    #-- coding: utf-8 --

    或 在文件打开处 指定编码

    with open(“hamlet.txt”, “r”, encoding=‘utf-8’) as f:

     ........
    
     ........
    

    【输入形式】

    【输出形式】

    以下仅是输出样例(仅列出3个,需要列出n个),不是最终结果:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬

    the 1138

    and 965

    to 754

    单词 左对齐,并占10个位置; 次数 右对齐,并占5个位置

    n=int(input())
    f=open("hamlet.txt","r")
    txt=f.read()
    txt=txt.lower()
    for i in '!"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~':
        txt=txt.replace(i," ")
    words=txt.split()
    counts={}
    for word in words:
        counts[word]=counts.get(word,0)+1
    items=list(counts.items())
    items.sort(key=lambda x:x[1],reverse=True)
    for i in range(n):
        word,count=items[i]
        print("{:<10}{:>5}".format(word,count))
    f.close()
    

    2.【问题描述】

    使用freqDict = eval(input()) 读入单词词频字典,再读入一段英文,默认按照英文输入的顺序,统计更新单词词频字典,并输出。
    【输入形式】

    输入为两行,第一行是一个字典,形如{‘hello’: 12, ‘world’: 10},其中存储初始的词频数据。第二行是一段英文文本。
    【输出形式】

    输出一行,直接打印输出更新后的字典。
    【样例输入】

    {}

    hello world
    【样例输出】

    {‘hello’: 1, ‘world’: 1}

    freqdict=eval(input())
    x=input().split()
    for word in x:
        freqdict[word]=freqdict.get(word,0)+1
    print(freqdict)
    

    3.【问题描述】

    文件src.txt存储的是一篇英文文章,将其中所有大写字母转换成小写字母存入文件dest.txt。

    【样例输入】

    src.txt里面存储内容为: This is a Book

    【样例输出】

    生成文件dest.txt。内容为: this is a book

    fr=open("src.txt","r")
    fw=open("dest.txt","w")
    txt=fr.read()
    txt=txt.lower()
    fw.write(txt)
    fr.close()
    fw.close()
    
    展开全文
  • Python实验六 列表与元组的应用

    千次阅读 2020-06-12 21:39:00
    1.写出程序的运行结果 a = [50,75,53,92,77,64,79,21] s = [0] * 10 for i in range(len(a)): k = a[i] // 10 s[k] = s[k] + 1 m = s[0] k = 1 while k < 10: if s[k] >...2.下面的程序是希望从键盘输入 10 个...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 281
精华内容 112
关键字:

python实验六

python 订阅