《Python编程:从入门到实践》读书笔记:第7章 用户输入和while循环

目录

第7章 用户输入和while循环

7.1 函数input()的工作原理

7.1.1 编写清晰的程序

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

7.1.3 求模运算符

7.2 while循环

7.2.1 使用while循环

7.2.2 让用户选择何时退出

7.2.3 使用标志

7.2.4 使用break退出循环

7.2.5 在循环中使用continue

7.2.6 避免无限循环

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

7.3.1 在列表之间移动元素

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

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


第7章 用户输入和while循环

7.1 函数input()的工作原理

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: i love you
 i love you

7.1.1 编写清晰的程序

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

Hello, Amicia!
prompt = 'If you tell us who you are, we can personalize the message you see.'
prompt += '\nWhat is 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 is your first name? Eric

Hello, Eric!

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

age = input('How old are you? ')
print(age)
How old are you? 21
21
age = input('How old are you? ')
print(age)

print(age >= 18)
    print(age >= 18)
TypeError: '>=' not supported between instances of 'str' and 'int'
age = input('How old are you? ')
age = int(age)
print(age)

print(age >= 18)
How old are you? 21
21
True
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? 100

You're tall enough to ride!

7.1.3 求模运算符

number = input("Enter a numeber, 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 numeber, and I'll tell you if it's even or odd: 8

The number 8 is even.

7.2 while循环

7.2.1 使用while循环

current_number = 1
while current_number <= 5:
    print(current_number)
    current_number += 1
1
2
3
4
5

7.2.2 让用户选择何时退出

prompt = "\nTell me something, and I will 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 will repeat it back to you:
Enter 'quit' to end the program. hello
hello

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. nihao
nihao

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit
quit

我们将变量message的初始值设置为空字符串"",让Python首次执行while代码行时有可供检查的东西。Python首次执行while语句时,需要将message的值与“quit”进行比较,但此时用户还没有输入。如果没有可供比较的东西,Python将无法继续运行程序。为解决这个问题,必须给变量message指定初始值。虽然这个初始值只是一个空字符串,但符合要求,能够让Python执行while循环所需的比较。

prompt = "\nTell 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)
Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. dear
dear

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. you 
you 

Tell me something, and I will repeat it back to you:
Enter 'quit' to end the program. quit

7.2.3 使用标志

在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态,这个变量称为标志,充当程序的交通信号灯。

prompt = "\nTell me something, and I will 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)
Tell me something, and I will repeat it back to you.
Enter 'quit' to end the program. hi
hi

Tell me something, and I will repeat it back to you.
Enter 'quit' to end the program. uit
uit

Tell me something, and I will repeat it back to you.
Enter 'quit' to end the program. quit

7.2.4 使用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.) paris
I'd love to go to Paris!

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

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

在任何Python循环中都可使用break语句。

7.2.5 在循环中使用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

7.2.6 避免无限循环

x = 1
while x <= 5:
    print(x)
    x += 1
1
2
3
4
5

  如果遗漏代码,程序将无限执行!

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

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

for循环是一种遍历列表的有效方式,但不应在for循环中修改列表,否则将导致Python难以跟踪其中的元素。要在遍历列表的同时对其进行修改,可使用while循环。通过将while循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

7.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

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

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

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

print(pets)
['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
['dog', 'dog', 'goldfish', 'rabbit']

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

responses = {}

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

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

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

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

# 调查结束,显示结果
print("\n--- Pool Results ---")
for name, response in responses.items():
    print(f"{name} would like to climb {response}.")
What is you name? Jim
Which mountain would you like to climb someday? huaguoshan
Would you like to let anothert person respond? (yes / no) yes

What is you name? tom
Which mountain would you like to climb someday? ximalaya
Would you like to let anothert person respond? (yes / no) no

--- Pool Results ---
Jim would like to climb huaguoshan.
tom would like to climb ximalaya.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值