第1章: 热身运动

00. 反转字符串

将字符串”stressed”中的字符以逆序形式(从末尾到首部)重组为新的字符串。

01. “schooled”

将字符串”schooled”中的第1个、第3个、第5个、第7个字符连接在一起,组成新的字符串。

02. “shoe” + “cold” = “schooled”

交错地将“shoe”和“cold”中的字符顺次拼接,以得到字符串“schooled”。

03. 圆周率

给定语句”Now I need a drink, alcoholic of course, after the heavy lectures involving quantum mechanics.” 以单词为单位分割该语句,并创建一个列表,顺次记录该语句中各个单词的长度(即字符数)。

04. 元素记号

给定语句 “Hi He Lied Because Boron Could Not Oxidize Fluorine. New Nations Might Also Sign Peace Security Clause. Arthur King Can.”

以单词为单位分割该语句,从第1个、第5个、第6个、第7个、第8个、第9个、第15个、第16个、第19个单词中提取第一个字符,并从其他单词中提取前两个字符。随后创建一个关联数组(dictonary对象或map对象),将提取出的字符串映射到各个相应单词在该语句中的位置。

05. n-gram

实现一个函数,从给定的序列对象中(例如string或list)来生成n-gram。使用这个函数从句子”I am an NLPer”中获得单词级别的bi-gram与字符级别的bi-gram。

06. 集合

设由单词”paraparaparadise”和”paragraph”所生成的字符级bi-gram为分别为集合\(X\)和集合\(Y\)。求这两个集合的并(union)、交(intersection)、差(difference)。此外,请检查集合\(X\)和\(Y\)中是否包含bi-gram “se”。

07. 基于模板的句子生成

实现一个函数,接收三个参数xyz作为输入,并返回字符串"{y} is {z} at {x}"作为输出,其中”{x}”, “{y}”, “{z}”分别代表参数xyz的值。 进一步地,以x=12y="temperature"z=22.4作为输入,确认该函数的输出结果。

08. 密文

实现函数cipher,使得它能够对给定字符串中的各个字符进行下列变换:

  • 对于任意一个小写英文字母c,将其置换成ASCII码为(219 - [c的ASCII码])的字符;
  • 对于任意一个非小写英文字母的字符,不对其进行变换。

使用该函数对英文信息进行加密与解密。

实现一个函数cipher,它能够对给定字符串作下述要求的变换:

  • 每个小写字符c将被转换为ASCII码为(219 - [ c的ASCII码 ])所对应的字符
  • 其他字符保持不变

使用这个函数对英文信息进行加密与解密。

09. Typoglycemia

按下列要求编写程序:

  • 接收一个以空格为分隔符的单词序列作为输入
  • 对于在该序列中的每个单词:
    • 如果该单词的长度(字符数)不超过4,保持该单词不变;
    • 否则,
      • 保持该单词的首尾字符不变;
      • 随机打乱剩余字符的排列顺序。

输入任意英文序列(例如”I couldn’t believe that I could actually understand what I was reading : the phenomenal power of the human mind. “),确认该程序的运行结果。