while循环(2)---处理列表和字典
列表间移动元素
有时我们需要在两个列表之间移动元素。下面的例子展示了如何使用while循环将一个列表中的元素移动到另一个列表中。
numbers_1 = [1, 2, 3, 4, 5]
numbers_2 = [] ## 默认F
while numbers_1:
item = numbers_1.pop()
numbers_2.append(item)
print("原:", numbers_1)
print("改", numbers_2)
原: []
改 [5, 4, 3, 2, 1]
whlie循环删除列表中多个指定元素
在列表中删除多个指定元素时,直接使用remove()方法无法删除所有匹配的元素。 当要删除列表中所有为特定值的元素时,可以使用while循环结合remove()方法来实现。
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
pets.remove('dog')
print(pets)
### 删除 cat
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
for current_an in pets:
if current_an == 'cat':
pets.remove('cat')
print(pets)
['dog', 'dog', 'goldfish', 'rabbit']
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
while'cat'in pets:
pets.remove('cat')
print(pets)
可以直接把while改成if吗?
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
if'cat'in pets:
pets.remove('cat')
print(pets)
whlie循环将用户输入存储到字典中
有时我们需要将用户输入的信息存储到字典中。下面的例子展示了如何使用while循环来实现这一点。
user_info = {}
whileTrue:
name = input("请输入您的姓名(输入'退出'结束):")
if name.lower() == '退出':
break
age = input("请输入您的年龄:")
user_info[name] = age
print("用户信息:", user_info)
用户信息: {'xiaoming': '12', 'xiaohong': '12'}
上面使用了while循环来不断提示用户输入,直到用户输入特定的退出命令为止,打断循环用的是break语句。
还有其他的写法吗?
user_info = {}
current_time = True
while current_time:
name = input("请输入您的姓名(输入'quit'结束):")
if name.lower() == 'quit':
current_time = False
else:
age = input("请输入您的年龄:")
user_info[name] = age
print("用户信息:", user_info)
作业1
1、编写一个程序,使用while循环将一个列表中的所有偶数(10个左右)移动到另一个列表中,直到原列表为空为止。
2、编写一个程序,使用while循环删除列表中所有为特定值的元素(例如,删除列表中所有的数字3)。
3、编写一个程序,使用while循环将用户输入的多个键值对存储到字典中,直到用户输入特定的退出命令为止。
4、假设你在开一家餐馆,编写一个程序,先告知用户菜单,使用while循环不断提示用户输入他们想点的菜品名称和数量(每次询问时都要告知菜单,相同的菜点过之后不能再点),并将这些信息存储到一个字典中,当用户输入"退出"时结束输入,并打印出用户点的所有菜品和数量,以及总共点了多少道菜,并告知用户大概的等待时间(假设每道菜需要5分钟准备时间)。(提示:用户点菜不得少于2道,菜单菜品不得少于4道)
函数(function)
函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用(call)该函数。
定义函数
使用def关键字来定义函数,后跟函数名和圆括号(括号内可包含参数)。函数体缩进编写。
defgreet_user():
print("Hello!")
greet_user()
Hello!
函数的基本结构如下:
def函数名(参数1, 参数2, ...):
函数体(代码块)
return 返回值
向函数传递参数
函数可以接受参数,参数是在函数定义的括号内指定的变量。调用函数时,可以传递实际的值(实参)给这些参数(形参)。
defgreet(name):
print(f"Hello,{name}!")
greet('name')
Hello,name!
实参和形参
实参是调用函数时传递给函数的实际值,而形参是在函数定义时指定的变量名。实参和形参之间通过位置或关键字进行匹配。
defgreet(name): # name是形参
print(f"Hello, {name}!")
greet("Alice") # "Alice"是实参
注意
- 函数定义后不会立即执行,必须通过调用函数来执行其中的代码。
函数可以返回值,也可以不返回值(默认返回None)。
- 函数体内的代码块必须正确缩进,以表示它们属于函数的一部分。
- 函数名应遵循命名规则,通常使用小写字母和下划线分隔单词。
- 函数可以有默认参数值,如果调用时未提供实参,则使用默认值。
作业2
编写一个名为 favorite_book() 的函数,其中包含一个名为 title 的形参。让这个函数打印一条像下面这样的消息: 学习python真有意思!