入门级编程通关练习题#19、#20、#21

Level-0_#19 条件判断语句纠错 下面的过马路函数根据传入的红绿灯参数值判断车辆是否可以通过路口,如果是红灯或者黄灯就返回 false,否则就返回 true。函数代码里面有语法错误,请修改。 Level-0_#20 函数返回字符串 实现一个visit函数,根据传入的参数place 来返回下面的一句话:“I'm going to visit <place> for this summer.”,其中<place>需要用参数 place的内容来替换。 Level-0_#21 函数返回负数 实现一个函数 negative,把传入的参数 integer 变成负数返回,如果传入的参数值是零或者负数,就保持不变。 输入样例: 10 输出样例:-10

入门级编程通关练习题 #17 – 字符串操作

给定一个字符串,根据下面的规则创建一个新的字符串:如果该字符串的结尾是数字,则把当前数字加一;如果结尾不是数字,那么把数字1添加到结尾。 输入样例: codeguru099 输出样例: codeguru100 算法思路: 方法一:可以借助正则表达式(regular expression)来匹配字符串结尾的数字,然后做修改。方法二:可以使用字符串函数 str.rstrip()来把结尾的数字剥离,然后做处理。

入门级编程通关练习题 #16 – 修改字符串

给定一个字符串,把里面的每个单词首字母放到单词最后,然后加上"cga",如果是标点符号则保持不变。 输入样例: msg = "It is important to learn algorithm !" 输出样例: "tIcga sicga mportanticga otcga earnlcga lgorithmacga !" 算法思路: 检查一个单词是否有标点符号,可以用函数 str.isalnum() 或者函数 str.isalpha()。

入门级编程通关练习题 #15 – 地名格式化

给定一组地名的字典列表,创建一个地名字符串,每个地名之间用逗号隔开,最后两个地名用&符合隔开。 输入样例: arr = [{'city': 'Folsom'}, {'city': 'Bend'}, {'city': 'Seaside'}] 输出样例: "Folsom, Bend & Seaside" 算法思路: 使用 str.join() 函数配合列表推导式来创建字符串,最后一个&符号需要做特别处理。

入门级编程通关练习题 #14 – Pangram 全字母短句

全字母短句 (Pangram) 是一句话里面使用了所有26个英文字母,每个字母最少使用一次。最著名的Pangram是下面这句话:"The quick brown fox jumps over the lazy dog"。 给定一句话,判断它是否是全字母短句。 输入样例: "Waltz, bad nymph, for quick jigs vex."  输出样例: True 算法思路: 可以使用两个set来做比较大小,一个set是所有26个字母,另外一个set是当前字符串。当前字符串的set如果大于26个字母的set,则表明是 Pangram。第二种方法可以使用 all 函数加列表推导式,检查26个字母里的每一个是否都在当前字符串里面。

入门级编程通关练习题 #13 – 数组最大值

给定一个整数数列,包括正整数和负整数,计算该数列里面的数值连续相加可以达到的最大值。 输入样例: [2, -2, 1, -3, 4, -1, 2, 1, -5, 6] 输出样例: 7 上面的样例数列中,最大值是 4 - 1 + 2 + 1 -5 + 6 = 7 算法思路: 需要使用两个最大值,一个指向当前最大值,一个指向全部最大值,每次检查一个数值后更新当前最大值,如果当前最大值为负数则重置为零。然后和全部最大值做比较,取两者max来更新全部最大值。

入门级编程通关练习题 #12 – 字符积分

给定一给字符串里面包含一组全部小写的词汇,按照下面的规则计算每个词汇的积分:字母 a 为1分, 字母 b 为2分, 字母 c 为3分...,以此类推,返回得分最高的词汇。如果两个词汇得分相同,返回位置靠前的词汇。 输入样例: "seattle is a great place to visit during the summer time." 输出样例: "summer" 算法思路: 可以使用 max 函数的如下格式:max(iterable[, default=obj, key=func]) ->…

入门级编程通关练习题 #11 – 数列对比

给定两组数列A和B,每个数列里面的数字都是正整数。检查两个数列长度是否相同,而且数列A里面的每个数字是否可以在数列B中找到平方值。如果检查通过返回True,否则返回False。如果是空数列也返回False。譬如数列A为[11, 3, 20, 9],数列B为[81, 9, 121, 400],检查结果为True,因为数列A里面的每个数字平方后,都可以在数列B中找到对应值。 输入样例: A = [121, 11, 33, 67, 25, 144, 99, 11]B = [625, 4489, 20736, 121, 121, 1089, 9801, 14641] 输出样例: True 算法思路:…

入门级编程通关练习题 #10 –凯撒密码之ROT13

凯撒密码(Caesar cipher),或称凯撒加密、凯撒变换、变换加密,是一种最简单且最广为人知的加密技术。凯撒密码是一种替换加密技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。 ROT13(回转13位,英语:rotate by 13 places,有时也记为ROT-13)是凯撒密码的一种,也就是把明文中的所有字母都在字母表上向后偏移13位后进行加密。ROT13是一种在英文网络论坛用作隐藏八卦(spoiler)、妙句、谜题解答以及某些脏话的工具,目的是逃过版主或管理员的匆匆一瞥。 实现一个函数,把输入的字符串进行ROT13加密,如果是数字或者是特殊字符则保持不变。 输入样例: "CodeGuru.Academy is cool." 输出样例: "PbqrTheh.Npnqrzl vf pbby" 算法思路: 字符串一对一进行转换可以采用函数 str.maketrans() 和 str.translate()。