python字典程序题_4.python(列表,元组,字典)练习题

这些题是我断断续续,断了好几天,快半个月写的吧,,因为每天就学一个半小时Python

写一道看一道题的答案

1.有两个列表

l1=[11,22,33]

l2=[22,33,44]

a.获取内容相同的元素列表

我写的

l1 = [11, 22, 33]

l2= [22, 33, 44]

l3=[]for i inl1:if i inl2:

l3.append(i)print(l3)

b.获取l1中有,l2中没有的元素列表

我写的

l1 = [11, 22, 33]

l2= [22, 33, 44]

l3=[]for i inl1:if i inl2:pass

else:

l3.append(i)print(l3)

1940467-20200310215648560-1595120959.png

老师写的

l1 = [11, 22, 33]

l2= [22, 33, 44]

l3=[]for i inl1:if i not inl2:

l3.append(i)print(l3)

c.获取l1和l2中内容都不同的元素

我写的

l1 = [11, 22, 33]

l2= [22, 33, 44]

l3=[]for i inl1:if i inl2:pass

else:

l3.append(i)for i inl2:if i inl1:pass

else:

l3.append(i)print(l3)

1940467-20200310220339718-216647229.png

2.有1,2,3,4,5,6,7,8 八个数字,能组成多少个互不相同且无重复数字的两位数?

我写的

li = [1, 2, 3, 4, 5, 6, 7, 8]

v = 0

for i1 in li:

for i2 in li:

v = v+1

if i1 == i2:

v = v-1

print(v)

1940467-20200310222455421-957615315.png

老师写的

v =0for i1 in range(1, 9):for i2 in range(1, 9):if i1 !=i2:

v= v+1

print(v)

3.输出一份九九乘法表

我写的

v =0for i1 in range(1, 10):for i2 in range(1, 10):if i1 <=i2:

v= i1*i2print(str(i1)+"*"+str(i2)+"="+str(v))

不会换行

老师写的

for i1 in range(1, 10):

string= ""

for i2 in range(1, i1+1):

string= string + str(i1)+"*"+str(i2)+"="+str(i1*i2)+"\t"

print(string)

老师写的第二种方法

for i1 in range(1, 10):for i2 in range(1, i1+1):print(str(i1)+"*"+str(i2)+"="+str(i1*i2)+"\t", end="") #后面的end=""可以让print不换行 表示可以让输出的末尾加的值

print("\n",end="")

1940467-20200312213835716-1252432990.png

3.数列li[1,2,3,6,5],使其元素输出组成互不相同,数字不重复的组合

我写的

li = [1, 2, 3, 6, 5]for i1 inli:for i2 inli:if i1 !=i2:print(str(i1)+str(i2))

我写的是个狗屁,没读懂题

老师写的

li = [1, 2, 3, 6, 5]

l=len(li)

i= 0 #range()中要用到i,就要在外面定义

for i in range(0, l-i):for v in range(i+1, l):print(li[i], li[v])

1940467-20200312220141014-1314791204.png

4.

1940467-20200317110833411-1397098139.png

我写的

for i in range(1, 20):for v in range(1, 30):for j in range(1, 100):if 5*i+3*v+1/3*j == 100:if i+j+v == 100:

text= "公鸡有{a}只,母鸡有{b}只,小鸡有{c}只"result= text.format(a=i, b=v, c=j)print(result)

老师写的

for i in range(1, 100//5): #// 代表整除

for v in range(1, 100//3):for j in range(1, 100):if 5*i+3*v+1/3*j == 100 and i + j + v == 100:print(i, v, j)

1940467-20200317113824004-411577524.png

5.

1940467-20200317114546453-1359049286.png

1940467-20200317115004632-935561679.png

a.

tu = ('alex', "eric", 'rain',)

v=len(tu)print(v)

1940467-20200317115153104-1460440635.png

b.

tu = ('alex', "eric", 'rain',)

v= tu[2]print(v)

c.

tu = ('alex', "eric", 'rain',)

v= tu[1:]print(v)

d.

tu = ('alex', "eric", 'rain',)for v intu:print(v)

e.

tu = ('alex', "eric", 'rain',)for v inrange(len(tu)):print(v)

f.

tu = ('alex', "eric", 'rain',)for v, j in enumerate(tu, start=10):print(v, j)

1940467-20200317120535447-1156266004.png

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

6.

1940467-20200317153832802-827473607.png

百度了一顿

nums = [2, 7, 11, 15, 1, 8, 7]

nums1= list(set(nums)) #去除列表中重复的元素

a =[]

l=len(nums1)

i=0for i in range(0, l-i):for v in range(i+1, l):if nums1[i] + nums1[v] == 9:

a.append((nums1[i],nums1[v]))print(a)

1940467-20200317170640916-1958796591.png

10.

1940467-20200317171224317-550260788.png

百度和看的老师的

user_list =[]for i in range(1,302):

temp= {"name": "alex"+str(i), "email": "alex1@live.com"+str(i), "pwd": "pwd"+str(i)}

user_list.append(temp)whileTrue:

s= input('输入页码:')ifs.isdigit():

s=int(s)

start= (s-1)*10end= s*10result=user_list[start:end]for item inresult:print(item, type(item))else:print('输入格式错误')

11.通过数字选择类别,输入b返回上一级别,输入q结束程序

dic = {

'植物':

{'草本植物':

['冬播', '春播二月兰', '紫罗兰', '洋葱', '小麦'],

'木本植物':

['松', '杉', '枫杨', '樟茶', '月季', '木槿'],

'水生植物':

['泉生眼子菜', '竹叶眼子菜', '睡莲', '萍蓬草', '荇菜', '菱角', '芡实']

},

'动物':

{'两栖动物':

['蟾蜍', '海龟', '蝾螈', '蜥蜴', '大鲵'],

'禽类':

['鸡', '鸭', '鹅火鸡', '鸽', '鹌鹑'],

'哺乳类动物':

['老鼠', '豪猪', '海狸', '水豚', '狮', '豹']

}

}

go = True

while go:

##第一层

li1 = []

for i, v in enumerate(dic,1):

print(i, v)

li1.append(v)

first = input("选择想看类别")

first = int(first)

while go:

##第二层

li2 = []

for i, v in enumerate(dic[li1[first-1]],1):

print(i, v)

li2.append(v)

second = input("选择功能,看下一层,添加内容,返回上一层,退出程序")

if second.isdigit():

second = int(second)

while go:

##第三层

for i in dic[ li1[first-1] ] [ li2[second-1] ]:

print(i)

fourth = input("是否返回或退出")

fourth = fourth.lower()

if fourth == "b": #返回上一级

break

elif fourth == "q": #程序退出

go = False

break

elif second.isalpha():

second = second.lower()

if second == "add":

lx = input("类型:")

if dic.get(lx, 1) == 1: #要添加类型不存在时返回默认值1

dic[lx] = {}

zl = input("种类:")

if dic[lx].get(zl, 1) == 1:

dic[lx][zl] = []

while True:

mc = input("名称:")

if mc == "q":

break

elif mc in dic[lx][zl]:

print("已将存在")

else:

dic[lx][zl].append(mc)

dic ={'植物':

{'草本植物':

{'冬播':{}, '春播二月兰':{}, '紫罗兰':{}, '洋葱':{}, '小麦':{}},'木本植物':

{'松':{}, '杉':{}, '枫杨':{}, '樟茶':{}, '月季':{}, '木槿':{}},'水生植物':

{'泉生眼子菜':{}, '竹叶眼子菜':{}, '睡莲':{}, '萍蓬草':{}, '荇菜':{}}

},'动物':

{'两栖动物':

{'蟾蜍':{}, '海龟':{}, '蝾螈':{}, '蜥蜴':{}, '大鲵':{}},'禽类':

{'鸡':{}, '鸭':{}, '鹅火鸡':{}, '鸽':{}, '鹌鹑':{}},'哺乳类动物':

{'老鼠':{}, '豪猪':{}, '海狸':{}, '水豚':{}, '狮':{}, '豹':{}}

}

}

path=[]whileTrue:

temp=dicfor item inpath:

temp=temp[item]print('当前可选的所有子节点:', list(temp.keys()))

choice= input('1:添加节点; 2:查看节点(Q退出,B返回)')if choice == "1":

name= input("请输入要添加的节点")

temp[name]={}elif choice == "2":

name= input('请输入要查看的节点名称:')

path.append(name)elif choice.lower() == "b":if path: #空列表是false

path.pop()elif choice.lower() == "q":break

else:print('输入错误,请重新输入!')

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值