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 都可以被程序所识别。

 

posted @ 2017-05-08 21:13  alben-xue  阅读(972)  评论(0编辑  收藏  举报