hnu计算机与人工智能概论答案4.19

第1关:字典的创建和基本操作

根据提示,在右侧编辑器补充代码,创建字典并对该字典进行如下操作: 1.添加一门成绩:体育:90 2.打印化学成绩,如果找不到,则输出‘不存在’ 3.修改语文成绩为100 4.删除信息成绩 5.输出字典。

第一问,两种做法:

score_dict = {}
for i in range(5):
    # 请按下面的注释提示添加代码,完成相应功能
    #1.对score_dict字典进行初始化,数据从键盘输入,得到如任务描述中的字典
    ###### Begin ######
    if i ==0:
        key=input()
        value=input()
        score_dict[key]=value
    if i>0:
        key=input()
        value=eval(input())
        score_dict[key]=value
    #######  End #######
score_dict = {}
for i in range(5):
    # 请按下面的注释提示添加代码,完成相应功能
    #1.对score_dict字典进行初始化,数据从键盘输入,得到如任务描述中的字典
    ###### Begin ######
        key=input()
        value=input()
        if value.isdigit():
            value=eval(value)
        score_dict[key]=value
    #######  End #######

第二问,增减查修较为简单

# 请按下面的注释提示添加代码,完成相应功能
#2.请在此添加代码,实现对score_dict的添加、删除、查找、修改等操作,并打印输出相应的值
###### Begin ######
score_dict['体育']=90
print(score_dict.get('化学','不存在'))
score_dict['语文']=100
del score_dict['信息']
print(score_dict)
#######  End #######

第2关:字典的遍历

根据提示,在右侧编辑器补充代码,由列表创建字典,计算张三同学的总分,将总分作为新的键值对加入字典,最后输出字典中的所有键值对。

第二问注意一下要将非张三的数值加起来。最后输出的时候注意不能直接输出字典,要转化一下格式。

# 创建并初始化score_dict字典
score_list=['姓名','语文','英语','数学','体育']
# 请按下面的注释提示添加代码,完成相应功能
#1.根据上面的列表创建score_dict字典并初始化,得到如任务描述中的字典,字典中的值从键盘输入
###### Begin ######
score_dict={}
for key in score_list:
    if key=="姓名":
        value=input()
        score_dict[key]=value
    else:
        value=eval(input())
        score_dict[key]=value
#######  End #######


# 请按下面的注释提示添加代码,完成相应功能
#2.请在此添加代码,计算张三同学的总分,并将总分作为新的键值对加入,最后输出score_dict的所有键值对
###### Begin ######
sum1=0
for i in score_dict.values():
    if i !='张三':
        sum1+=i
score_dict["总分"]=sum1
for k,v in score_dict.items():
    print(k,v)
#######  End #######

第3关:字典和列表的嵌套

根据提示,在右侧编辑器补充代码,执行以下操作: 1.创建一个字典score_dict,里面包含三个列表,输出 2.创建一个列表score_list,里面包含两个字典,输出

#创建空列表score_dict
score_dict={}
#每次循环生成一个键值对
for i in range(3):
    #输入课程名作为字典的键
    key=input()
    # 创建空列表
    value_list=[] 
    # 请按下面的注释提示添加代码,完成相应功能
    #1.从键盘输入两个分数,保存到列表中
    ###### Begin ######       
    v1=eval(input())
    value_list.append(v1)
    v2=eval(input())
    value_list.append(v2)
    #######  End #######
    score_dict[key]=value_list
    
print(score_dict)    

#创建空列表score_list
score_list=[]
#每次循环生成一个字典
for i in range(2):
    # 创建空字典
    s_dict={}
    # 请按下面的注释提示添加代码,完成相应功能
    #2.对从键盘输入三门课程及成绩,保存到字典中
    ###### Begin ######
    for j in range(3):
        k=input()
        v=eval(input())
        s_dict[k]=v
    #######  End #######
    score_list.append(s_dict)

第4关:字典综合实训1-英文词频统计

本关任务:从键盘输入一串字符,统计字符串中出现次数最多的单词和次数,如果有多个相同的最多次数,需要输出多个单词及次数。

完成这个任务要解决以下难点:

1.非英文单词与大小写的归一化

2.空格分离时,“”项不能计数

3.字典的排序以及输出格式问题

#输入的字符串中可包含".,~!@#$%^&*()+_/0123456789"等非英文单词字符
WordStr = input() 
#stpe1:归一化处理 
WordStr=WordStr.lower()
for ch in ".,~!@#$%^&*()+_/0123456789":
    WordStr=WordStr.replace(ch," ")
#2分割字符串为列表,英文单词之间用空格分隔
Wordlist=WordStr.split(" ")
#3 统计每个单词的个数(列表或字典的方法)
Worddict={}
for word in Wordlist:
    if word in Worddict and word !="":
        Worddict[word]+=1
    elif word not in Worddict and word !='':
        Worddict[word]=1
#字典排序,返回值是一个列表
lis1=sorted(Worddict.items(),key=lambda x:x[1],reverse=True)
#输出最高频率单词和次数 ,多个相同高频字也要输出
for i in range(len(lis1)):
    if lis1[i][1]==lis1[0][1]:
        print(lis1[i][0],lis1[i][1])

第5关:字典综合实训2-整数翻译

本关任务:编写一个能将3位数以内的整数翻译成英文的程序。

本关注意点:整十和整百的处理,以及三位数英文之间的关联。

#数字翻译成英文程序
def unit_to_word(u): #将0~9的数字转换成英文,并返回转换后的英文
    # 请在下面编写代码
    # ********** Begin ********** #
    numlist1=([0,'zero'],[1,'one'],[2,'two'],[3,'three'],[4,'four'],[5,'five'],[6,'six'],[7,'seven'],[8,'eight'],[9,'nine'])
    numdict1=dict(numlist1)
    return numdict1[u]
    # ********** End ********** #
    # 请不要修改下面的代码 
def tens_to_word(t): #利用unit_to_word,将10~19、
    #以及20~99的十位部分数字转换成英文,并返回转换后的英文
    # 请在下面编写代码
    # ********** Begin ********** #
    if t<10:
        return unit_to_word(t)
    elif 10<=t<=19:
        numlist2=([10,'ten'],[11,'eleven'],[12,'twelve'],[13,'thirteen'],[14,'fourteen'],[15,'fifteen'],[16,'sixteen'],[17,'seventeen'],[18,'eighteen'],[19,'nineteen'])
        numdict2=dict(numlist2)
        return numdict2[t]
    elif 20<=t<=99:
        numlist3=([2,'twenty'],[3,'thirty'],[4,'forty'],[5,'fifty'],[6,'sixty'],[7,'seventy'],[8,'eighty'],[9,'ninety'])
        numdict3=dict(numlist3)
        if t%10==0:
            return numdict3[t//10]
        if t%10!=0:
            return numdict3[t//10]+" "+tens_to_word(t%10)
    # ********** End ********** #
    # 请不要修改下面的代码

def hundreds_to_word(h): #利用unit_to_word、tens_to_word进行转换,并返回转换后结果的函数
    # 请在下面编写代码
    # ********** Begin ********** #
    if 0<=h<=99:
        return tens_to_word(h)
    if h%100!=0:
        if 100", hundreds_to_word(test))

你可能感兴趣的:(python,开发语言)