三道习题(1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。)
#coding=gbk ''' 1、将单词表中由相同字母组成的单词归成一类,每类单词按照单词的首字母排序,并按 #每类中第一个单词字典序由大到小排列输出各个类别。 #输入格式:按字典序由小到大输入若干个单词,每个单词占一行,以end结束输入。 #cinema #iceman #maps #spam #aboard #abroad #end #输出格式:一类单词一行,类别间单词以空格隔开。 #aboard abroad #cinema iceman #maps spam ''' result=[] ''' while 1: word=input('请输入单词:') if word=='.': break else: result.append(word) ''' result=['nihao','haoni','aohni','haha','aahh','hhaa','ee','rrr','fhg','ghf'] d=dict.fromkeys([''.join(sorted(i)) for i in result])#字典的初始化 不能直接把value值直接职位[],这样所有的value都会一致的变化 print(d) for k,v in d.items(): d[k]=[] #初始化的字典的value值 for i in result: print('i:',i) if ''.join(sorted(i))==k and i not in d[k]: d[k].append(i) print(d) for i in sorted(d.keys()): for j in sorted(d[i]): print(j,end=' ') print() #2.有一堆100块的石头,2个人轮流随机从中取1-5块,谁取最后一块就谁win,编程实现此过程 print('*'*30) from random import * a=list(range(1,101)) while len(a)>0: person_1=[] person_2=[] print('最开始的a:',a) num_1=randint(1,5) if num_1>len(a): num_1=len(a) person_1=sample(a,num_1) print('person_1',person_1) for i in person_1: a.remove(i) if len(a)==0: print('1 赢了!!') break print('1处理之后的a:',a) num_2=randint(1,5) if num_2>len(a): num_2=len(a) person_2=sample(a,num_2) print('person_2',person_2) for i in person_2: a.remove(i) if len(a)==0: print('2 赢了!!') break print('2之后的a:',a) ##实现一个方法,判断一个正整数是否是2的乘方,比如16是2的4次方,返回True; #18不是2的乘方,返回False。要求性能尽可能高 from math import sqrt,ceil n=0 while n<100: input_num=int(input('请输入数字:')) for i in range(1,ceil(sqrt(input_num))+1): if pow(2,i)==input_num: print('%d是2的%d次方!!'%(input_num,i)) break else: print('不是2的平方数!!') n+=1