python学习8之while用法

while 循环

1.while()循环

for循环针对集合中的每个元素都执行一个代码块,而while循环不断运行,直到指定的条件不满足为止

prompt = "\n Tell me something, and I will repeat it back to you: "
prompt += "\nEnter 'quit' to end the program. "
message = ''
while message != 'quit':
    message = input(prompt)
    if message != 'quit':
        print(message)

2.标志

若有很多复杂的情况导致程序停止运行。在这种情况下应该设置一个变量,用于判断整个程序是否处于活动状态。这个变量称为标志(flag), 可以让程序在标志位True时继续运行。并在任何时间导致标志的值为false时停止运行。这样在while语句中只需要检查一个条件

active = True
#message = input(prompt)#将input()语句放在while循环外,则会陷入死循环,在执行while的过程中不会停下来给你输入别的
#所以这句input必须放在while内部
while active:
    message = input(prompt)
    if message == 'quit':
        active = False;
    else:
        print(message)

3.break 用法

立即退出循环,不再执行循环中余下的代码

prompt = "\nPlease enter a city name which you have visited: "
prompt += "\nEnter 'quit' ,if you want to stop"
active = True
while active:
    message = input(prompt)
    if message == 'quit':
        break
    else:
        print(message)

4.continue用法

要返回循环开头,并根据测试结果决定是否继续执行循环,可以使用continue语句

# prompt = "Please enter a number,"
# 从1数到10,但只打印其中奇数
prompt = "Enter 'quit', you will stop this program. "
active = True
num=0
while num <= 10:
    if num%2 != 0:
        print(num)
    num +=1;

current_number = 0
while current_number < 10:
    current_number += 1
    if current_number % 2 == 0:
        continue
    print(current_number)

5.避免死循环

每个while循环都必须有停止运行的途径,这样才不会没完没了地执行下去。

######################-----practice-----############################
#提示用户输入披萨配料,并在输入quit后结束循环
#每当用户输入一种配料后,都打印一条消息
prompt = "\nPlease input Pizza ingredients"
prompt += "\nIf you want to stop input, please input quit. "
active = True
while active:
    ingredients = input(prompt)
    if ingredients == 'quit':
        break
    else:
        print(f"Ok, you like {ingredients}, I will use it to make your pizza!")

# 根据观众年龄收取不同的票价
# < 3 free
# 3~12 10 dollar
# >12 15 dollar
prompt = "How old are you?"
prompt += "Please input your age: "
active = True
while active:
    age = input(prompt)
    if age == "quit":
        break;
    else:
        age = int(age)
        if age < 3:
            print("Free")
        elif age >= 3 and age <= 12:
            print("Charge you 5 dollars")
        elif age > 12 and age <= 120:
            print("Charge you 15 dollars")
        else:
            print("please re-enter!")

6.使用while来处理列表和字典

将while和字典及列表结合起来使用,可存储并组织大量输入

unconfirmed_users = ['alice','brian','candace']
confirmed_users = []

while unconfirmed_users:
    current_user = unconfirmed_users.pop()
    print(f"Verifying user: {current_user}")
    confirmed_users.append(current_user)
print("\nThe following users have been confirmed")
for confirmed_user in confirmed_users:
    print(confirmed_user.title())

7.删除为特定值的所有列表元素

remove()函数可用于删除列表中的特定值,但若列表中包含的特定值有多个,是重复的。就需要用到while

pets = ['cat','dogs','dog','cat','dog','cats','cat']
while 'cat' in pets:
    pets.remove('cat')
print(pets)

8.使用用户输入来填充字典

可使用while循环输入任意多的信息

####字典嵌套存储用户输入信息
responses = {}
polling_active = True
while polling_active:
    name = input("\nWhat is your name? ")
    age = int(input("\nHow old are you? "))
    response = input("\nWhich mountain would you like to climb someday? ")
    temp = {}
    temp['age'] = age
    temp['response'] = response
    responses[name] = temp
    # name = {}
    # name['response'] = response  #报错
    # name['age'] = age
    repeat = input("Would you like to let another person respond? y/n ")
    if repeat == 'n':
        polling_active = False
print("----Polling Results----")
print(responses)#{'yu': {'age': 32, 'response': 'tai'}, 'zhu': {'age': 45, 'response': 'tai'}}

#字典简单存储用户信息
responses = {}
polling_active = True
while polling_active:
    name = input("\nWhat is your name? ")
    age = int(input("\nHow old are you? "))
    response = input("\nWhich mountain would you like to climb someday? ")
    responses[name] = response
    repeat = input("Would you like to let another person respond? y/n ")
    if repeat == 'n':
        polling_active = False
print("\n---poll resutls ----")
print(responses)#{'wj': 'tai', 'yu': 'tai'}
for name , response in responses.items():
    print(f"{name} wants to climb {response}")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值