while循环 操作列表与字典

1、在列表间移动元素

#!/usr/bin/env python

#filename=list.py

num1 = [1,3,5,7,9,11,13,15]

num2 = []

while num1:

    interest_number = num1.pop()

    num2.append(interest_number)

print(num2)

#实例是一个最简单的在列表间移动元素的脚本#

会发现效果是:

 

[root@Python-Test Day3]# ./list.py
[15, 13, 11, 9, 7, 5, 3, 1]

因为num1.pop()是从最后一个开始pop的,所以导致整个mun2是ASSIC逆序的,可以通过函数sort()来进排序

while num1:
interest_number = num1.pop()
num2.append(interest_number)
num2.sort()
print(num2)

[root@Python-Test Day3]# ./list.py
[1, 3, 5, 7, 9, 11, 13, 15]

 

删除列表中的特定元素:

注意看如下代码

>>> pets = [ 'dog', 'cat', 'rabbit', 'goldfish','cat']
>>> pets.remove('cat')
>>> pets
['dog', 'rabbit', 'goldfish', 'cat']

有一个宠物列表“pets”,其中多次出现了‘cat’这个元素,现在需要从此列表中移除‘cat’元素,

使用之前的list.remove(' ’)会发现只是把位于第一个index的cat删除了。没有移除所有,这个时候需要使用到while循环来帮忙了

代码段:

#!/usr/bin/env python

#filename while_list.py

pets = [ 'dog','cat','goldfish','cat','pig']

while 'cat' in pets:

    pets.remove('cat')

print(pets)

根据用户输入来填充字典:(例如,问卷调查)

#!/usr/bin/env python

#filename=questionnaire.py  

love_av = {}    #定义一个空字典#

polling_active = True 

while polling_active:

    name = input("\n What is your name? :")   #第一个input存放到变量 name#

    response = input("\n Which actor do you like better? (Takizawa Rola/Maria Ozawa) :")    #第二个input存放到变量 response#

    love_av[name] = response  #编辑字典 name为键,response为值#

    repeat = input("\n Do you have any other hobbies? (yes/no) :")

    if repeat == 'no':

        polling_active = False

print("\n -----Poll Results-----")

for name,response in love_av.items():

    print(name.title() + " prefer " + response.title())

这段交互代码有一个缺陷:

就是当用户输入的是yes/no选项出现大小写混搭的时候,程序无法区分。

改进——

把repeat 变量进行一次转换

 repeat = repeat.upper() #无论输入什么。全部转化为大写 #

if repeat == 'NO':

        polling_active = False

这时候,不管用户输入No\nO\NO\no 都可以被程序所识别。

 

转载于:https://www.cnblogs.com/alben-cisco/p/6827875.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值