Python集合与字典的概念与使用-课堂练习[python123题库]

集合与字典的概念与使用-课堂练习

一、单项选择题

1、 哪个选项是下面代码的输出结果?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

d={'a':1,b':2,"b':'3"}
print(d['b'])
  • A 2
  • B 1
  • C 3
  • D {‘b’:2}
【答案】C
【解析】创建字典时,如果相同键对应不同值,字典采用最后(最新)一个"键值对"。

2、关于大括号{},以下描述正确的是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

  • A 直接使用{}将生成一个列表类型
  • B 直接使用{}将生成一个元组类型
  • C 直接使用{}将生成一个集合类型
  • D 直接使用{}将生成一个字典类型
【答案】D
【解析】
集合类型和字典类型最外侧都用{}表示,不同在于,集合类型元素是普通元素,字典类型元素是键值对。
字典在程序设计中非常常用,因此,直接采用{}默认生成一个空字典。

3、S和T是两个集合,哪个选项对S^T的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

  • A S和T的交运算,包括同时在集合S和T中的元素
  • B S和T的差运算,包括在集合S但不在T中的元素
  • C S和T的补运算,包括集合S和T中的非相同元素
  • D S和T的并运算,包括在集合S和T中的所有元素
【答案】c
【解析】集合"交并差补"四种运算分别对应的运算符是:& | - ^

4、给定字典d,哪个选项对d.values()的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

  • A 返回一个元组类型,包括字典d中所有值
  • B 返回一种dict_values类型,包括字典d中所有值
  • C 返回一个集合类型,包括字典d中所有值
  • D 返回一个列表类型,包括字典d中所有值
【答案】B
【解析】
运行如下代码:(其中d是一个预定义的字典)

d={"a":1, "b":2}
type(d.values())
输出结果是:<class 'dict_values'>

d.values()返回的是dict_values类型,这个类型通常与for..in组合使用。

5、给定字典d,哪个选项对x in d的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

  • A 判断x是否是字典d中的值
  • B x是一个二元元组,判断x是否是字典d中的键值对
  • C 判断x是否是在字典d中以键或值方式存在
  • D 判断x是否是字典d中的键
【答案】B
【解析】
键是值的序号,也是字典中值的索引方式。

因此,x in d 中的x被当作d中的序号进行判断。
二、程序设计题
1、jieba库分词

描述

txt 表示一段中文文本,请补充代码,输出该文本所有可能的分词结果。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

___①__
txt = "中华人民共和国教育部考试中心委托专家制定了全国计算机等级考试二级程序设计考试大纲"
ls = ___②__
print(ls)

输出格式

输出txt文件中的分词结果

代码:

# -*- coding = utf-8 -*-
# @Author:为一道彩虹
import jieba  # 导入jieba库


if __name__ == '__main__':
    # 待分词的中文文本
    txt = "中华人民共和国教育部考试中心委托专家制定了全国计算机等级考试二级程序设计考试大纲"

    # 使用jieba库进行分词,cut_all=True表示全模式分词
    ls = jieba.lcut(txt, cut_all=True)

    # 输出分词结果
    print(ls)
2、字典最大值

描述

输出字典fruits中键值最大的键值对。完善代码。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

fruits = {"apple":10,"mango":12,"durian":20,"banana":5}
m = 'apple'
for key in fruits.keys():
#此段代码请完善
print('{}:{}'.format(m,fruits[m]))

代码:

# -*- coding = utf-8 -*-
# @Author:为一道彩虹


if __name__ == '__main__':
    # 定义一个字典 fruits,存储水果及其对应的数量
    fruits = {"apple": 10, "mango": 12, "durian": 20, "banana": 5}

    # 初始化一个变量 m,用于存储当前最大值对应的键
    m = 'apple'

    # 遍历字典的键
    for key in fruits.keys():
        # 如果当前键对应的值大于当前最大值对应的值,则更新最大值及其对应的键
        if fruits[key] > fruits[m]:
            m = key

    # 输出最大值的键值对
    print('{}:{}'.format(m, fruits[m]))
3、字典翻转输出

描述

读入一个字典类型的字符串,反转其中键值对输出。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

即,读入字典key:value模式,输出value:key模式。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入格式

用户输入的字典格式的字符串,如果输入不正确,提示:输入错误。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输出格式‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

给定字典d,按照print(d)方式输出‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入输出示例

输入输出
示例 1{"a": 1, "b": 2}{1: 'a', 2: 'b'}

代码:

# -*- coding = utf-8 -*-
# @Author:为一道彩虹


if __name__ == '__main__':
    # 接收用户输入的字符串
    s = input()
    try:
        # 使用 eval 函数将字符串转换为字典类型
        d = eval(s)
        # 初始化一个空字典 e
        e = {}
        # 遍历字典 d 的键值对
        for k in d:
            # 将 d 中的键值对的键作为 e 中的值,值作为 e 中的键,实现键值对的交换
            e[d[k]] = k
        # 输出交换后的字典 e
        print(e)
    except:
        # 若输入不符合字典格式,则捕获异常并输出提示信息
        print("输入错误")
4、摩斯密码翻译器

类型:字符串‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬


描述
摩斯密码(morse code),又称摩斯电码、摩尔斯电码(莫尔斯电码),是一种时通时断的信号代码,通过不同的信号排列顺序来表达不同的英文字母、数字和标点符号;通信时,将英文字母等内容翻译成摩斯电码(摩尔斯电码)进行传输,收到摩斯密码(莫尔斯电码)后,对电码进行反翻译,得到通信的实际内容,达到加密通信内容的目的。 本摩斯密码(摩尔斯电码)翻译器,只对字符,数字,标点进行翻译,不区分大小写,其它内容自动忽略;摩斯密码解密时,可接受空格分隔、“/”分隔的摩斯密码,其它字符也自动忽略。 摩斯密码表_摩斯密码对照表: 字母
字符 电码符号 字符 电码符号 字符 电码符号 字符 电码符号
A .━ B ━ ... C ━ .━ . D ━ ..
E . F ..━ . G ━ ━ . H ....
I .. J .━ ━ ━ K ━ .━ L .━ ..
M ━ ━ N ━ . O ━ ━ ━ P .━ ━ .
Q ━ ━ .━ R .━ . S ... T ━
U ..━ V ...━ W .━ ━ X ━ ..━
Y ━ .━ ━ Z ━ ━ .. 数字
字符 电码符号 字符 电码符号 字符 电码符号 字符 电码符号
0 ━ ━ ━ ━ ━ 1 .━ ━ ━ ━ 2 ..━ ━ ━ 3 ...━ ━
4 ....━ 5 ..... 6 ━ .... 7 ━ ━ ...
8 ━ ━ ━ .. 9 ━ ━ ━ ━ . 标点符号
字符 电码符号 字符 电码符号 字符 电码符号 字符 电码符号
. .━ .━ .━ : ━ ━ ━ ... , ━ ━ ..━ ━ ; ━ .━ .━ .
? ..━ ━ .. = ━ ...━ ’ .━ ━ ━ ━ . / ━ ..━ .
! ━ .━ .━ ━ ━ ━ ....━ _ ..━ ━ .━ " .━ ..━ .
( ━ .━ ━ . ) ━ .━ ━ .━ $ ...━ ..━ & .━ ...
@ .━ ━ .━ . 编写程序:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

  1. 将输入的英文句子转换成摩尔斯电码并输出,除字母、数字和符号外的空格原样输出,每个摩斯码之间及与符号之间用一个空格分隔。
  2. 将输入的一组用空格分隔的摩斯电码密文,对其进行解码输出,字母输出为小写,标点符号原样输出。
morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
         ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
digit = ['-----', '.----','..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-',
               "'": '.----.', '/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.',
               '(': '-.--.', ')': '-.--.-', '$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}

**示例 1:**‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入:  
Python is a programming language that lets you work more quickly and integrate your systems more effectively.  
输出:  
.--. -.-- - .... --- -.  .. ...  .-  .--. .-. --- --. .-. .- -- -- .. -. --.  .-.. .- -. --. ..- .- --. .  - .... .- -  .-.. . - ...  -.-- --- ..-  .-- --- .-. -.-  -- --- .-. .  --.- ..- .. -.-. -.- .-.. -.--  .- -. -..  .. -. - . --. .-. .- - .  -.-- --- ..- .-.  ... -.-- ... - . -- ...  -- --- .-. .  . ..-. ..-. . -.-. - .. ...- . .-.. -.-- .-.-.-

代码:

# -*- coding = utf-8 -*-
# @Author:为一道彩虹


def encode_dict():
    """以字符为键,以摩斯码为值构建字典并返回字典"""
    morse = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---",
             ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
    digit = ['-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.']
    punctuation = {'.': '.-.-.-', ':': '---...', ',': '--..--', ';': '-.-.-.', '?': '..- -..', '=': '-...-',
                   "'": '.----.', '/': '-..-.', '!': '-.-.--', '-': '-....-', '_': '..--.-', '"': '.-..-.',
                   '(': '-.--.', ')': '-.--.-', '$': '...-..-', '&': '·-···', '@': '.--.-.', ' ': ''}
    morse_dic = dict(zip('abcdefghijklmnopqrstuvwxyz0123456789', morse))  # 以小写字母为键,摩斯码为值构建字典
    morse_dic = morse_dic | punctuation  # 所有字母、数字和主要符号的编码
    return morse_dic


def encode():
    """输入一个明文字符串,返回各字符摩斯码构成的列表"""
    txt = input().lower()  # 输入明文字符串转小写
    result = [morse.get(c, c) for c in txt]  # 索引字典中当前字符为键的值,构建列表
    return result


def decode():
    """输入一个密文字符串,返回各摩斯码对应字符构成的字符符串"""
    morse_dict = dict(zip(morse.values(), morse.keys()))  # 以字典键为值,以值为键构建新字典
    txt = input()  # 输入密文字符串
    answer = ''.join([morse_dict.get(c, c) for c in txt.split(' ')])
    return answer


def judge():
    if choice == 'encode':
        print(*encode())
    elif choice == 'decode':
        print(decode())
    else:
        print('输出错误,请重新输入')


if __name__ == '__main__':
    morse = encode_dict()
    choice = input()
    judge()
5、英文单词个数统计

类型:Python 函数和代码复用‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬


给出一个字符串 s,内容参见"编程模板",请统计并打印字符串 s 中出现单词的个数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

**示例1:**‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

输入:无
输出:10

注意:示例1 是一个输入输出示范样例,不是正确结果。

代码:

# -*- coding = utf-8 -*-
# @Author:为一道彩虹


if __name__ == '__main__':
    # 原始字符串
    s = '''
    "Collusion is very real with Russia," Trump quoted conservative commentator Dan Bongino as saying on Trump's favorite Fox News morning show, "but only with Hillary and the Democrats, and we should demand a full investigation."
    '''
    # 将双引号替换为空格
    s = s.replace('"', ' ')
    # 将逗号替换为空格
    s = s.replace(',', ' ')
    # 将句号替换为空格
    s = s.replace('.', ' ')
    # 使用空格分割字符串,得到单词列表
    ls = s.split()
    # 输出单词列表的长度,即单词的个数
    print(len(ls))

先赞后看,养成习惯!!!^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我的坚持下去的动力。点赞后不要忘了关注我哦!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值