6.用户输入和while循环

6.1 函数input()的工作原理

函数input()让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其赋给一个变量,以方便你使用。

message = input("Tell me something,and I will repeat it back to you:")
print(message)

#结果如下:
#Tell me something,and I will repeat it back to you:

 6.1.1 编写清晰的程序

name = input("Please enter your name:")
print(f"\nHello,{name}!")

#结果如下:
#Please enter your name:Eric

#Hello,Eric!

提示超过一行

prompt = "If you tell us who you are, we can personalize the message you see."
prompt += "\nWhat id your first name?"

name =input(prompt)
print(f"\nHello,{name}!")

#结果如下:
#If you tell us who you are, we can personalize the message you see.
#What id your first name?Eric

#Hello,Eric!

6.1.2 使用int()来获取数值输入

判断一个人是否满足坐过山车的身高要求

height = input("How tall are you, in inches?")
height =int(height)

if height >= 48:
    print("\nYou're tall enough to ride!")
else:
    print("\nYou'll be able to ride when you're a little older.")

#结果如下
#How tall are you, in inches?71

#You're tall enough to ride!

6.1.3 求模运算

判断一个数是奇数还是偶数

number = input("Enter a number, and I'll tell you if it's even or odd:")
number = int(number)

if number % 2 == 0:
    print(f"\nThe number {number} is even.")
else:
    print(f"\nThe number {number} is odd.")

#结果如下:
#Enter a number, and I'll tell you if it's even or odd:42

#The number 42 is even.

6.2 while循环简介

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

5.2.1 使用while循环

current_number = 1
while current_number <=5:
    print(current_number)
    current_number += 1

#结果如下:
#1
#2
#3
#4
#5

6.2.2 让用户选择何时退出

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

#结果如下:
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.Hello everyone
#Hello everyone
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.hello again
#hello again
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.quit
#quit

程序将quit打印了出来,为修复这种问题,只需使用一个简单的if测试

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

    if message != 'quit':
        print(message)

#结果如下:
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.Hello everyone
#Hello everyone
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.hello again
#hello again
#Tell me something, and I'll repeat it back to you:
#Enter 'quit' to end the program.quit

6.2.3 使用标志

在要求很多条件都满足才能继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志(flag),充当程序的交通信号灯。可以让程序在标志为True时继续运行,并在任何事件导致标志的值为False时让程序停止运行。

prompt = "Tell me something, and I'll repeat it back to you:"
prompt += "\nEnter 'quit' to end the program."

active = True
while active:
    message = input(prompt)

    if message == 'quit':
        active = False
    else:
        print(message)

6.2.4 使用break退出循环

break退出整个循环

prompt = "\nPlease enter the name of a city you have visited:"
prompt += "\n(Enter 'quit' when you are finished.)"

while True:
    city = input(prompt)

    if city == 'quit':
        break
    else:
        print(f"I'd love to go to {city.title()}!")

#结果如下:
#Please enter the name of a city you have visited:
#(Enter 'quit' when you are finished.)New York
#I'd love to go to New York!

#Please enter the name of a city you have visited:
#(Enter 'quit' when you are finished.)San Francisco
#I'd love to go to San Francisco!

#Please enter the name of a city you have visited:
#(Enter 'quit' when you are finished.)quit

6.2.5 在循环中使用continue

continue退出当前循环

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

    print(current_number)

#结果如下:
#1
#3
#5
#7
#9

6.2.6 避免无限循环

x = 1
while x <= 5:
    print(x)

#结果如下:
#1
#1
#1
#可按Ctrl+C,也可关闭显示程序输出的终端窗口

6.3 使用while循环来处理列表和字典

 6.3.1 在列表之间移动元素

一个列表包含新注册但还未验证的网站用户。验证这些用户后,如何将他们移到另一个已验证的用户列表中呢?

# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice','brain','candace']
confirmed_users = []

#验证每个用户,知道没有未验证用户为止
#将每个经过验证的用户都移到已验证用户列表中
while unconfirmed_users:
    current_user = unconfirmed_users.pop()

    print(f"Verifying user:{current_user.title()}")
    confirmed_users.append(current_user)

#显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
    print(confirmed_user.title())
    
#Verifying user:Candace
#Verifying user:Brain
#Verifying user:Alice

#The following users have been confirmed:
#Candace
#Brain
#Alice

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

pets = ['dog','cat','goldfish','cat','tabbit','cat']
print(pets)

while 'cat' in pets:
    pets.remove('cat')

print(pets)

#结果如下:
#['dog', 'cat', 'goldfish', 'cat', 'tabbit', 'cat']
#['dog', 'goldfish', 'tabbit']

6.3.3 使用用户输入来填充字典

 

responses = {}

#设置一个标志,指出调查是否继续
polling_active = True

while polling_active:
    #提示输入被调查者的名字和回答
    name = input("\nWhat is your name?")
    response = input("Which montain would you like to climb someday?")

    #将回答存储在字典中
    responses[name] = response

    #看看是否还有人要参与调查
    repeat = input("Would you like to let another person reapond?(yes/no)")
    if repeat == 'no':
        polling_active = False

#调查结束,显示结果
print("\n--- Poll Result ---")
for name, response in responses.items():
    print(f"{name} would like to climb {response}.")

#结果如下:
#What is your name?Eric
#Which montain would you like to climb someday?Denali
#Would you like to let another person reapond?(yes/no)yes

#What is your name?lynn
#Which montain would you like to climb someday?Devil's Thumb
#Would you like to let another person reapond?(yes/no)no

#--- Poll Result ---
#Eric would like to climb Denali.
#lynn would like to climb Devil's Thumb.

 

posted @ 2021-03-18 11:46  从小白到小白  阅读(171)  评论(0)    收藏  举报