# TRHX'S BLOG

# Python3 自学笔记 C06

TRHX'BLOG

2018-10-30

Python3

input()函数

while循环

Python3 自学笔记第六章【用户输入和 while 循环】

# - 6.1 函数 input() 的工作原理

函数 input() 让程序暂停运行，等待用户输入一些文本。获取用户输入后，Python将其储存在一个变量当中，以方便你使用；函数 input() 返回为 string 类型

    1
    2

    message = input("Please tell me your name:")
    print("Hello , " + message + "!")

输出结果如下：

    1
    2

    Please tell me your name:anliy
    Hello , anliy!

进阶：

    1
    2
    3
    4

    message = "Please tell me your name so that we can personalize the messages you see."
    message += "\nWhat's your first name?"
    name = input(message)
    print("\nHello , " + name + "!")

输出结果如下：

    1
    2
    3
    4

    Please tell me your name so that we can personalize the messages you see.
    What's your first name?trhx

    Hello , trhx!

# - 6.1.1 使用 int() 来获取数值输入

使用函数 input() 时，Python会将用户输入解读为字符串：

    1
    2
    3
    4

    >>> age = input("How old are you?")
    How old are you?19
    >>> age
    '19'

为了解决这个问题，可以使用函数 int() ，它让Python将输入视为数值：

    1
    2
    3
    4
    5

    >>> age = input("How old are you?")
    How old are you?19
    >>> age = int(age)
    >>> age
    19

实例：

    1
    2
    3
    4
    5
    6

    age = input("Please tell me your age:")
    age = int(age)
    if age >= 18:
        print("You are old enough to go to the Internet bar!")
    else:
        print("You are not old enough to go to Internet bar!")

输出结果如下：

    1
    2

    Please tell me your age:17
    You are not old enough to go to Internet bar!

# - 6.1.2 求模运算符

处理数值信息时，求模运算符（%）是一个很有用的工具，它将两个数相除并返回余数：

    1
    2
    3
    4
    5
    6
    7
    8

    >>> 4 % 3
    1
    >>> 5 % 3
    2
    >>> 8 % 2
    0
    >>> 7 % 3
    1

# - 6.1.3 在 Python 2.7 中获取输入

如果使用 Python 2.7，应该使用函数 `raw_input()` 来提示用户输入，这个函数与 Python 3 中的 `input()` 一样，也将输入解读为字符串；Python 2.7 也包含函数 `input()`，但它将用户输入解读为Python代码，并尝试运行它们

# - 6.2 while 循环

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

# - 6.2.1 使用 while 循环

一个简单的 while 循环：

    1
    2
    3
    4

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

输出结果如下：

    1
    2
    3
    4

    1
    2
    3
    4

# - 6.2.2 让用户选择退出循环

    1
    2
    3
    4
    5
    6

    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)

运行程序：

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

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

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

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

# - 6.2.3 使用标志

在要求很多条件都满足才继续运行的程序中，可以定义一个变量，用于判断整个程序是否处于活动状态，这个变量称为标志

    1
    2
    3
    4
    5
    6
    7
    8
    9

    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)

运行结果与6.2.2一致

# - 6.2.4 使用 break 退出循环

要立即退出 while 循环，不再运行循环中余下的代码，也不管条件测试的结果如何，可使用 break 语句，break 语句用于控制程序流程，可使用它来控制哪些代码将执行，哪些代码不执行

    1
    2
    3
    4
    5
    6
    7
    8
    9

    prompt = "\nPlease enter the name of a city you have visited:"
    prompt += "\nEnter 'quit' when you are finished."
    active = True
    while active:
        city = input(prompt)
        if city == 'quit':
            break
        else:
            print("I'd love to go to " + city.title() + "!")

运行程序：

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

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

    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语句，例如，可以使用break语句来退出遍历列表或字典

# - 6.2.5 在循环中使用 continue

要返回到循环开头，并根据条件测试结果决定是否继续执行循环，可使用 continue 语句，它不像 break 语句那样不再执行余下的代码并退出整个循环，例如，从1到10只打印其中奇数：

    1
    2
    3
    4
    5
    6

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

输出结果如下：

    1
    2
    3
    4
    5

    1
    3
    5
    7
    9

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

for循环是一种遍历列表的有效方式，但在for循环中不应修改列表，否则将导致Python难以跟踪其中的元素，要在遍历列表的同时对其进行修改，可使用while循环

# - 6.3.1 在列表之间移动元素

    1
    2
    3
    4
    5
    6
    7
    8
    9

    unconfirmed_users = ['alice' , 'brian' , 'candace']
    confirmed_users = []
    while unconfirmed_users:
        current_user = unconfirmed_users.pop()
        print("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())

首先创建一个未验证用户列表，其中包含用户Alice、Brian和Candace，还创建了一个空列表，用于存储已验证的用户，程序中的 while 循环将不断地运行，直到列表 unconfirmed_users 变成空的。在这个循环中，函数pop() 以每次一个的方式从列表 unconfirmed_users 末尾删除未验证的用户。由于Candace位于列表 unconfirmed_users 的末尾，因此其名字将首先被删除、存储到变量 current_user 中并加入到列表 confirmed_users 中。接下来是Brian，然后是Alice

为模拟用户验证过程，我们打印一条验证消息并将用户加入到已验证用户列表中。未验证用户列表越来越短，而已验证用户列表越来越长。未验证用户列表为空后结束循环，再打印已验证用户列表：

    1
    2
    3
    4
    5
    6
    7
    8

    Verifying user: Candace
    Verifying user: Brian
    Verifying user: Alice

    The following users have been confirmed:
    Candace
    Brian
    Alice

# - 6.3.2 删除包含特定值的所有列表元素

可以使用方法 remove() 来删除列表中特定的值，但如果要删除的值在列表中出现了多次，方法 remove() 就不管用了，如果要删除列表中所有包含特定值的元素则可以使用 while 循环：

    1
    2
    3
    4
    5

    names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']
    print(names)
    while 'candace' in names:
        names.remove('candace')
    print(names)

输出结果如下：

    1
    2

    ['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']
    ['alice', 'alice', 'brian', 'alix', 'heliy']

使用方法 remove() 做对比：

    1
    2
    3
    4

    names = ['alice' , 'candace' , 'alice' , 'brian' , 'alix' , 'candace' , 'heliy']
    print(names)
    names.remove('candace')
    print(names)

输出结果如下：

    1
    2

    ['alice', 'candace', 'alice', 'brian', 'alix', 'candace', 'heliy']
    ['alice', 'alice', 'brian', 'alix', 'candace', 'heliy']

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

    responses = {}

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

    while polling_active:
        #提示输入被调查者的姓名和回答
        name = input("\nWhat's your name?")
        response = input("What kind of fruit do you like?")

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

        #询问是否还有其他人要参与回答
        repeat = input("Would you like to let another person respond?(Yes/No)")
        if repeat == 'No':
            polling_active = False

    #调查结束，显示结果
    print("\n------ Poll Results ------")
    for name , response in responses.items():
        print(name + " like " + response + ".")

运行程序：

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11

    What's your name?TRHX
    What kind of fruit do you like?apple
    Would you like to let another person respond?(Yes/No)Yes

    What's your name?TRHXCC
    What kind of fruit do you like?banana
    Would you like to let another person respond?(Yes/No)No

    ------ Poll Results ------
    TRHX like apple.
    TRHXCC like banana.

最后更新于 2019年6月12日

###### 上一页

#### Python3 自学笔记 C07

###### 函数 模块

###### 下一页

#### Python3 自学笔记 C05

###### 字典

#### 评论

## TRHX'S BLOG

求知若饥 虚心若愚

本文目录
站内导航

- 所有文章
- 文章归档
- RSS订阅
- 我的友链
- 留言板
- 关于博主

QQ交流群

访客地图

域名转让

以下闲置域名低价转让，价格非常美丽，给钱就扔，欢迎骚扰：

52bug.club
52bug.xyz
52bug.top
NeedForSpeed.site
文章分类

- BLOG
  (3)
- CDN
  (1)
- Hexo
  (5)
- Java
  (1)
- Linux
  (2)
- Markdown
  (2)
- Python3
  (11)
- WEB前端
  (2)
- 图床
  (1)

热门标签
BLOG CDN Deepin Elicpse Github Github Pages HTTPS Hexo ICP备案 JDBC JS 预加载 Markdown Material X PEP8 PicGo Pygame Python SQL Server 2012 Ubuntu VMware if语句 input()函数 instant.page jsDeliver jsDelivr spfk while循环 主题个性化 公安备案 函数 列表 变量 图床 垃圾 字典 异常 技巧 操作列表 数据类型 文件 模块 类 继承 编辑器
最近在听