第96题
问题:请编写一个程序,计算并打印由控制台输入的字符串中的每个字符的数量。
示例:如果下面的字符串作为程序的输入:abcdefgab;
那么,程序的输出应该是:a,2 c,2 b,2 e,1 d,1 g,1 f,1;
提示:使用dict存储键/值对。使用dict.get()方法查找具有默认值的键。
dic = {} s=input() for s in s: dic[s] = dic.get(s,0)+1 print('\n'.join(['%s,%s' % (k, v) for k, v in dic.items()]))
我的答案:
>>> # s = input() # 假定就输入示例字符串 >>> s = 'abcdefgab' >>> t = sorted(list(set([(i,s.count(i)) for i in s]))) >>> print(' '.join([','.join([i[0],str(i[1])]) for i in t])) a,2 b,2 c,1 d,1 e,1 f,1 g,1 >>>
第97题
问题:请编写一个程序,从控制台接收一个字符串,并以相反的顺序打印出来。
示例:如果下面的字符串作为程序的输入:rise to vote sir;
那么,程序的输出应该是:ris etov ot esir;提示:使用list[::-1]以相反的顺序迭代一个列表。
1. s=input() 2. s = s[::-1] 3. print(s)
我的答案:
1. >>> s = 'rise to vote sir' 2. >>> print(''.join(reversed(s))) 3. ris etov ot esir 4. >>>
第98题
问题:请编写一个程序,从控制台接收一个字符串,并打印具有偶数索引的字符;
示例:如果下面的字符串作为程序的输入:H1e2l3l4o5w6o7r8l9d
那么,程序的输出应该是:Helloworld;
提示:使用list[:2]来迭代第2步中的列表。
1. s=input() 2. s = s[::2] 3. print(s)
第99题
问题:请写一个程序,打印[1,2,3]的所有排列;
提示:使用itertools.permutations)得到list的排列。
1. import itertools 2. print(list(itertools.permutations([1,2,3])))
第100题
问题:写一个程序来解决一个中国古代的经典难题:我们数农场里的鸡和兔子中有35个头和94条腿。我们有多少只兔子和多少只鸡?
提示:使用for循环来迭代所有可能的解决方案。
def solve(numheads,numlegs): ns='No solutions!' for i in range(numheads+1): j=numheads-i if 2*i+4*j==numlegs: return i,j return ns,ns numheads=35 numlegs=94 solutions=solve(numheads,numlegs) print(solutions)
我的答案:
1. >>> heads,legs=35,94 2. >>> for i in range(1,heads+1): 3. if 4*i+2*(35-i)==legs: 4. print(i,35-i) 5. 6. 7. 12 23 8. >>>
小学奥数解法: 全部“砍掉”2条腿,94-35x2=24,就剩12只“2脚兔”了 ^_^