您的位置:首页 > 编程语言 > Python开发

python学习--小练习题(二)

2018-02-28 12:49 447 查看
阶段性总结2

201802231.求0—7所能组成的奇数个数。程序分析:组成1位数是4个。组成2位数是7*4个。组成3位数是7*8*4个。组成4位数是7*8*8*4个。......try: number = int(raw_input("please input a number 1~7:"))except: print "error occur"if number ==1: print "4"else: print eval((str(4)+"*"+str(7)+"*"+"*".join([str(8)]*(number-2))).strip("*"))
2.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。try: number = raw_input("please input 4 numbers :")except: print "error occur"newnum=[]for i in number: j = (int(i)+5)%10 newnum.append(j)print newnumnewnum[0],newnum[3]=newnum[3],newnum[0]newnum[1],newnum[2]=newnum[2],newnum[1] print newnum
3.计算一个四乘四矩阵的所有元素的和,以及对角线之和a =[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16],]sum=0sum2=0for i in a: for j in i: sum=sum+jprint "sum",sum
for i in range(0,len(a)): sum2+=a[i][i]print "sum2",sum2
201802241.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。listnum=[]while 1: try: num = raw_input("please input a num:") if num.strip() =='stop': break else: listnum.append(num) except: print "input error occur"print listnummaxnum = max(listnum)minnum = min(listnum)maxindex = listnum.index(maxnum)minindex = listnum.index(minnum)listnum[0],listnum[maxindex]=listnum[maxindex],listnum[0]listnum[-1],listnum[minindex]=listnum[minindex],listnum[-1]print listnum 2.有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个
4000
数listnum =[1,2,3,4,5,6]m =2lastnum=listnum[-m:]print lastnumfrontnum = listnum[0:-m]print frontnumprint lastnum+frontnum
3:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。程序分析:学会分解出每一位数。num=raw_input("please input a number")if len(num)>5: print "len num is too long"else: print len(num) print num[::-1]
4.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。weekday={"m":"monday","tu":"tuesday","w":"wensday","th":"thursday","f":"friday","sa":"saturday","su":"sunday"}input_letter=raw_input("please input a day")if weekday.has_key(input_letter): print weekday[input_letter]else: input_second=raw_input("please input a day second letter") inputall =input_letter+input_second if weekday.has_key(input_letter): print weekday[inputall] else: print "you input wrong"

5.输入一行字符,判断有多少数字,多少字母,多少空格,多少其他字符inputstr=raw_input("please input a sentence")letter_num=0digit_num=0space_num=0other_num=0for i in inputstr: if i.isalpha(): letter_num+=1 elif i.isdigit(): digit_num+=1 elif i.isspace(): space_num+=1 else: other_num+=1 print u"共有字母:",letter_numprint u"共有数字:",digit_numprint u"共有空格:",space_numprint u"共有其他字符:",other_num
print u"共有字母:",letter_numprint u"共有数字:",digit_numprint u"共有空格:",space_numprint u"共有其他字符:",other_num

6.输入a, n result = a+aa+aaaa = raw_input("please input a")n= int(raw_input("please input n"))print "+".join([a*i for i in range(1,n+1)])
方法2:a=int(raw_input("input a value:"))times=int(raw_input("input count times:"))sum=ab=afor i in range(times-1):    sum=a*10+a%10+sum    a=a*10+a
201802251.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。num=[1,2,3,4]result=[]for i in num: for j in num: for z in num: if i!=j and i!=z and j!=z: newnum=str(i)+str(j)+str(z) result.append(newnum)
print result
2.题目:输入三个整数x,y,z,请把这三个数由小到大输出。程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。x,y,z = raw_input("please input 3 nums:a,b,c").split(",")if x>y: x,y=y,xif x>z: x,z=z,xif y>z: y,z=z,yprint x,y,z
3.做个抽奖程序,可以输入一个人的名字和抽奖号,然后随机抽取存在的抽奖号,程序可以指定抽取次数,抽取后显示抽奖号和名字,全部抽取完成后输出抽奖的总结果import random#输入一个抽奖池~~~~peopledict={}while 1: try: name,num = raw_input("please input name and num,split,").split(",") peopledict[num]=name except: breakprint peopledict
#抽奖结果resultdict={}#请输入抽奖次数try: num = int(raw_input("please input num:"))except: print "input error"
#进行抽奖啦啦啦while num>0: result = random.choice(peopledict.keys()) resultdict[result]=peopledict[result] #防止一个恶心的人被连续中奖两次!!! del peopledict[result] num-=1
print resultdict.values()4.将一个句子中的所有数字和标点符号删除掉s="i am a gitl 123,@#$"result=''for i in s: if i in [1,2,3,4,5,6,7,8,9,",","!","."]: continue else: result+=i
print result
2018.2.261.有一个长度是101的数组,存在1~100的数字,有一个是重复的,拿重复的找出来import randoma=range(100)random_num = random.randint(0,99)a.insert(random_num,random_num)print random_numnumber = [i for i in a if a.count(i)==2]print number[0]---------------------------------------------------------------------------------------------------------------------------2.2个长度相同的list,一个里面的做字典的key,另一个做value,请写个函数实现a=[1,"2",[3,4],(5,6),{7:8}]b=[0,1,2,3]d={}for i in range(len(a)): if not isinstance(a[i],(int,float,complex,long,str,unicode,tuple)): continue else: d[a[i]]=b[i]
print d---------------------------------------------------------------------------------------------------------------------------a=[1,"2",[3,4],(5,6),{7:8}]b=[0,1,2,3]d={}for i in range(len(a)):    if not isinstance(a[i],(int,float,complex,long,str,unicode,tuple)):        continue    else:        d[a[i]]=b[0]        del b[0]
print d
3.统计一个字符串中每个字母累积出现的字母个数统计一个字符串中每一个字母一共累计出现的次数。思路:"aabbaabbccddee"  a4  b4 c2遍历:没有记过数,则值为1,记过数+1k,vd.has_key----------------------------------------------------------------------------------------------#coding=utf-8a="aabbaabbccddee"dict={}for i in a: if dict.has_key(i): dict[i]+=1 else: dict[i]=1print dict
201802271.有一个长度为101的数组,存在1-100的数字,有一个是重复的,把重复的找出来import randomlistnum=[]for i in range(0,101): listnum.append(i)#print listnuma =random.randint(1,100)listnum.append(a)result =[i for i in listnum if listnum.count(i)==2]print result[0]
2.2个长度相同的list,一个里面的作字典的key,另一个做value,请写个函数实现a=["a","b","c",1,(3,4)]b=[1,2,3,4,5]dictnum={}for i in range(len(a)): if not isinstance(a[i],(int,float,complex,long,str,unicode,tuple)): continue else: dictnum[a[i]]=b[i]print dictnum
3.将一个多重嵌套的列表的元素进行互换,存到另一个同等维度的嵌套列表中,例如:[[1,2,3],[4,5,6]]互换后变成[[1,4],[2,5],[3,6]]
a=[[1,2,3],[4,5,6]]print [[j[i] for j in a] for i in range(3)]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: