新的一周开始啦,让我们先来三道python题练练手吧
本期知识点:
1.双重for循环的使用
2.字符串下标index的理解
3.python自带的collections库:Counter统计
第一题
输出九九乘法口诀表
for i in range(1, 10): # print(i) # 行数 for j in range(1, i+1): # print("列数:", j) print("%s * %s = %-2s" % (j, i, j*i), end=" ") print() # print本身就会换行
输出结果
1 * 1 = 1 1 * 2 = 2 2 * 2 = 4 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9 1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
第二题
找出单词 “mengwuji” 在 字符串“Hello,my name is mengwuji,You can also call me xiaozai” 中出现的位置,找不到返回-1
print(a.index("H")) #输出0 (返回H的下标,下标从0开始) print(a.index("mengwuji")) #输出17 (返回mengwuji字符串的第一个字符的下标) print(a.index("n")) #输出9 (返回字符串中第一个n的下标) #下面这个注意,左闭右开,10是可以取的下标,20是不取的下标,即如果n的下标为20,则不在此范围 print(a.index("n", 10, 20)) #输出19 (返回字符串中下标10-20之间第一个n的下标 ) # print(a.index("q")) # ValueError: substring not found (取不存在的字符则会报错) if "mengwuji" in a: print(a.index("mengwuji")) #输出17 else: print("字符串中无此字符") # 三元表达式 print(a.index("mengwuji") if "mengwuji" in a else "字符串中无此字符") #输出17
第三题
输入一个字符串 str, 输出第 m 个只出现过 n 次的字符,如在字符串 “你说说测试小仔是不是梦无矶测试开发之路的小仔” 中,
找出第2个只出现1 次的字符,输出结果:不
解决思路:
利用 collections 库的 Counter方法统计字符串每个单词出现的次数
方法一:
from collections import Counter a = "你说说测试小仔是不是梦无矶测试开发之路的小仔" m = 2 # 第几个 n = 1 # 出现的次数 b = Counter(a) print(b) print(dict(b)) # 输出 {'你': 1, '说': 2, '测': 2, '试': 2, '小': 2, '仔': 2, '是': 2, '不': 1, '梦': 1, '无': 1, '矶': 1, '开': 1, '发': 1, '之': 1, '路': 1, '的': 1} s = [] for i, j in dict(b).items(): # print(i, j) if j == n: s.append(i) print(s) #输出 ['你', '不', '梦', '无', '矶', '开', '发', '之', '路', '的'] print(s[m-1]) #输出 不 (在字符串中,下标是比个数少一,所以这里需要减一)
方法二:
# 列表推导式 a = "你说说测试小仔是不是梦无矶测试开发之路的小仔" m = 2 # 第几个 n = 1 # 出现的次数 b = Counter(a) print([i for i, j in dict(b).items() if j == n][m-1]) #输出 不