Python 用户输入和while循环的操作

函数input()的工作原理

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

prompt="if you tell us who you are , we can personlize the message you see."
prompt+="\nWhat is your first name?"
name=input(prompt)
print("\nHello, "+name+"!")

if you tell us who you are , we can personlize the message you see.
What is your first name?Eric

Hello, Eric!

这个示例演示了一种创建多行字符串的方式。第1行将消息的前半部分存储在变量prompt中;在第2行中,运算符+=在存储在prompt中的字符串末尾附加一个字符串。

While循环简介

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

使用while循环

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

1
2
3
4
5

在第一行,我们将current_number设置为1,从而指定从1开始数。接下来的while循环被设置成这样:只要current_number小雨或等于5,就接着运行这个循环。循环中代码打印current_number的值,在使用current_number+=1(current_number=current_number+1)将其值加1。

只要满足条件current_number<=5,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.hi
hi

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

我们定义了一条提示消息,告诉用户他有两个选择:要么输入一条消息,要么输入退出值。接下来,我们创建了一个变量——message,用于存储用户输入的值。我们将变量message的初始值设置为空字符串“”,让Python首次执行while代码行时有可供检查的东西。Python首次执行while语句时,需要将message的值与quit进行比较,但此时用户还没有输入。如果没有可供比较的东西,Python将无法运行程序。为解决这个问题,我们必须给变量message指定一个初始值。虽然这个初始值只是一个空字符串,但符合要求,让Python能够执行循环while所需的东西。只要循环不是‘quit',这个循环就会不断运行。

使用标志

在前一个示例中,我们让程序在满足指定条件时就执行特定的任务。但在更复杂的程序中,很多不同的事件都会导致程序停止运行;在这种情况下,该怎么办呢?

在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志,充当了程序的交通信号灯。你可让程序在标志为true时继续运行,并在任何事件导致标志的值为False时让程序停止运行。这样,在while语句中,就只需检查一个条件——标志的当前值是否为true,并将所有测试都放在其它地方,从而让程序变得更简洁。

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

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

我们将变量设置为true,让程序处于活跃状态。这样简化了while语句,因为不需要在其中做任何比较——相关的逻辑由程序的其他部分处理。只要变量active为true,循环就继续这样运行。

在while循环中,我们在用户输入后使用一条if语句来检查变量message的值。如果用户输入的是‘quit',我们就将变量active设置为False,这将导致while循环不再继续下去。如果用户输入的不是‘quit',我们就输入作为一条消息打印出来。

使用break退出循环

要立即退出循环,不再运行循环中余下的代码,也不管测试条件如何,可是用break语句。

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

while True:
    message=input(prompt)

    if message=='quit':
        break
    else:
        print(message)

在循环中使用continue

要返回到循环开头,并根据测试条件测试结果决定是否继续执行循环,可使用continue语句,它不像break语句那样不在执行余下的代码并退出整个循环。

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

1
3
5
7
9

我们首先将current_number设置成了0,由于它小于10,Python进入while循环。进入循环后,以步长为1的方式往上数,因此current_number为1。接下来,if语句检查current_number与2的求模运算结果。结果为0,就执行continue语句,让Python忽略余下的代码,并返回循环的开头。如果当前的数字不能被2整除,就执行循环中余下的代码,Python将这个数字打印出来。

在列表之间移动元素

假设有一个列表,其中包含新注册但还未验证的网站用户;验证这些用户后,如何将他们移动到另一个已验证的用户列表中呢?一种办法是使用一个while循环,在验证用户的同时将其从未验证用户列表中提取出来,再将其加入到另一个已验证用户列表中。代码可能类似于下面这样:

# 首先,创建一个待验证用户列表
#和一个用于存储已验证用户的空列表
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())

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

The following users have been confirmed:
Candace
Brian
Alice

我们首先创建了一个未验证用户列表,其中包含Alice、Brain、和Candace,还创建了一个空列表,用于存储以验证的用户。While循环不断的运行,直到列表unconfirmed_users变成空的。在这个循环中,函数pop()以每次一个的方式从列表unconfirmed_user末尾删除未验证的用户。由于Candace位于列表unconfirmed_users末尾,因此名字将首先被删除、存储到变量current_user中并加入到列表confirmed_users中。

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

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

前面我们使用remove()来删除列表中的特定元素,这之所以可行,是因为要删除的值在列表中只出现了一次。如果要删除列表中所有包含特定值的元素,该怎么办呢?

假设你有一个宠物列表,其中包含多个值为‘cat'的元素。要删除所有这些元素,可不断运行一个while循环,直到列表中不再包含值‘cat'.

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']

使用用户输入来填充字典

可使用while循环提示用户输入任意数量的信息。

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

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

    #将答案存储在字典中
    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+" would like to climb "+response+".")

What is your name?hi
which mountain would you like to climb someday?ko
Would you like to let another person respond?(yes/no)yes

What is your name?ji
which mountain would you like to climb someday?kp
Would you like to let another person respond?(yes/no)no

---Poll Results---
hi would like to climb ko.
ji would like to climb kp.

这个程序首先定义了一个空字典,并设置了一个标志,用于指出调查是否继续。只要polling_active为True,Python就运行while循环中的代码。

在这个循环中,提示用户输入其用户名及其爬那座山。将这些信息存储在字典response中,然后询问用户调查是否继续。如果用户输入yes,程序将再次进入while循环;如果用户输入no,标志polling_active将被设置为False,而while循环就此结束。

补充:python学习笔记——循环退出的几种方式

在这里主要讨论的是while循环,for循环通过迭代对象退出。

由于while循环通常不知道循环的次数,所以对于while循环,它的几种应用场景导致退出条件设置的不同。

一、让用户选择何时退出:定义退出变量

可使用while循环让程序在用户在愿意的时不断运行,在其中定义一个退出值,只要用户输入的不是这个,程序就接着运行。

我们小时候玩游戏的经常会遇到,当人物死亡的时候,界面会跳出 重新开始游戏or结束游戏,结束游戏就相当于我们设置的退出值。

形式如下:

active = True
while active:
    message = input()
    if message =="quit":
        active = False
    else:
        print(message)

1、active是我们开始就定义的一个while触发器

2、message定义用户输入字符

3、quit是退出条件,若用户输入quit,则active转换属性,下次循环退出。

二、用break退出:当明确遇到某些条件即退出时使用

当程序执行到break,不管后面直接退出循环(而不是if-else模块)。

break主要用于控制if-else语句,可使用ta来控制哪些代码将执行,哪些代码不执行。

prompt = "请输入你曾去过的城市名字(当你不想玩的时候输入'quit'退出程序)"
while True:
    if city == 'quit':
        break
    else:
        print("i'd love to go to"+'city.title()')

三、在循环中使用continue:当循环中需要跳过一些值时使用

当程序执行到continue,直接跳出本次循环,进入下一次循环。

例:从1到10,如果是奇数则输出,偶数则跳过

chuzhi = 0
while chuzhi !=10:
    chuzhi += 1
    if chuzhi%2 ==0:
        continue
    else:
        print(chuzhi)

在遇到continue的时候后面的else不看直接进入下一次while。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python的控制结构之For、While、If循环问题

    传统Python语言的主要控制结构是for循环.然而,需要注意的是for循环在Pandas中不常用,因此Python中for循环的有效执行并不适用于Pandas模式.一些常见控制结构如下. for循环 while循环 if/else语句 try/except语句 生成器表达式 列表推导式 模式匹配 所有的程序最终都需要一种控制执行流的方式.本节介绍一些控制执行流的技术. 01 for循环 for循环是Python的一种最基本的控制结构.使用for循环的一种常见模式是使用range函数生成数值范围

  • 详解python 条件语句和while循环的实例代码

    02条件语句和while循环 三目运算 a = 6 #原判断语句 if a > 5: print(True) else: print(False) #三目运算 print(True if a >5 else False) 逻辑运算 1. 三种逻辑运算 与逻辑 and 两边为真则为真 或逻辑 or 一边为真则为真 非逻辑 not 逻辑值取反 优先级: not > and > or 2.逻辑短路 # and 逻辑短路 a = 3 #没有对b赋值,但程序不会报错能够正常运行 #左边布尔值

  • python多线程实现同时执行两个while循环的操作

    如果想同时执行两个while True循环,可以使用多线程threading来实现. 完整代码 #coding=gbk from time import sleep, ctime import threading def muisc(func): while True: print 'Start playing: %s! %s' %(func,ctime()) sleep(2) def move(func): while True: print 'Start playing: %s! %s' %

  • Python趣味入门教程之循环语句while

    前言 任何语言都有循环语句,在Python里循环更是变化无穷,有基本的循环,有循环else语句,引伸出来的还有迭代器.推导式,咱们先学习最简单的一种. While循环  while 条件判断语句: 子代码1 子代码2 子代码3 - 子代码N 主代码1 while语句的格式与if类似,子代码必须进行缩进4个空格,作用却是大不相同.当它执行第一次循环时,判断条件是否成立,如果条件成立,就从子代码1开始执行到子代码N,然后程序会回到while语句再次判断条件是否成立,如果成立就继续从子代码1开始执行,

  • Python基础教程之循环语句(for、while和嵌套循环)

    循环可以用来重复执行某条语句,直到某个条件得到满足或遍历所有元素. 1 for循环 是for循环,可以把集合数据类型list.tuple.dict.set的元素遍历出来. (1)对list进行循环 city_list = ['广州','深圳','东莞','佛山'] city_list = ['广州','深圳','东莞','佛山'] for city in city_list: print("当前地市为:{0}".format(city)) 当前地市为:广州 当前地市为:深圳 当前地市为

  • python基础之while循环语句的使用

    一.前言 前面我们学习了if分支判断和for循环语句,在这次推送中我们将继续了解循环大家庭的成员们.大家可以通过上面的流程图来了解while的作用,它就像是一个门控开关,和if相似,当条件成立时执行规定操作. 下面是一个简单案例大家可用来加深理解 二.break语句 if-break的意思是如果满足了某一个条件,就提前结束循环 在下面的小案例中我们实现了反复询问,就像是你在登录自己电脑时,页面反复请求获取密码,直到你输入正确密码,循环结束 三.continue语句 continue–"继续&qu

  • Python 用户输入和while循环的操作

    函数input()的工作原理 函数input()让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以方便使用. prompt="if you tell us who you are , we can personlize the message you see." prompt+="\nWhat is your first name?" name=input(prompt) print("\nHello, "

  • Python中用户输入与while循环详情

    目录 一.用户输入 1.输入字符串 2.使用函数int()获取数值输入 3.求模运算符的应用 二.while循环 1.简单的while循环 2.通过用户输入退出while循环 3.使用标志 4.使用break退出循环 5.在循环中使用continue 三.使用while循环处理列表和字典 1.在列表之间移动元素 2.删除列表中所有的特定元素 3.使用用户输入来填充字典 前言: 本文的主要内容是介绍Python中用户输入与while循环,包括如何接收用户输入并进行处理,在程序满足一定的条件时让程序

  • Python使用tkinter库实现文本显示用户输入功能示例

    本文实例讲述了Python使用tkinter库实现文本显示用户输入功能.分享给大家供大家参考,具体如下: #coding:utf-8 from Tkinter import * class App: def __init__(self,root): #定义帧 frame = Frame(root) frame.pack() self.frame = frame w = Label(frame,text = "calculator") w.pack() self.newinput() #

  • python入门基础之用户输入与模块初认识

    一.注释 当前行注释:# 被注释内容 多行注释:""" 被注释内容 """ 二.用户输入 #!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello "

  • python实现根据用户输入从电影网站获取影片信息的方法

    本文实例讲述了python实现根据用户输入从电影网站获取影片信息的方法.分享给大家供大家参考.具体如下: 这段python代码主要演示了用户终端输入,正则表达式,网页抓取等 #!/usr/bin/env python27 #Importing the modules from BeautifulSoup import BeautifulSoup import sys import urllib2 import re import json #Ask for movie title title =

  • Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例

    本文实例讲述了Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作.分享给大家供大家参考,具体如下: 实现一个功能: 输入:一颗二叉树的先序和中序遍历     输出:后续遍历 思想: 先序遍历中,第一个元素是树根     在中序遍历中找到树根,左边的是左子树 右边的是右子树 Python代码: # -*- coding:utf-8 -*- def fromFMtoL( mid ): global las #全局后序遍历 global fir #先序遍历 root = fir[0] #取

  • Python之用户输入的实例

    大多数程序都旨在解决最终用户的问题,为此,需要从用户那里获取一些信息.函数input()让程序暂停运行,等待用户输入一些文本. 例如: name = input("Please intput your name:") print('Hello'+name) 执行结果: 使用int()来获取数值输入 使用函数input()时,Python将用户输入解读为字符串,此时我们需要使用函数int()将数字的字符串转换为数值表示. 例如: age = input("Please intp

  • bat文件与Vbs文件之间的常用操作(获取用户输入,执行VBS文件)

    bat文件 set /P StrInput="输入数字:" echo 输入的数字为%StrInput% set /P Flg="是否执行(y/n):" IF "%Flg%" equ "y" ( echo 执行命令 cscript abc.vbs "%StrInput%" ) 注意: 等于号(=)之间不能有空格,不然会出错. 判断值大小最好使用equ之类. 条件判断后的括号的有空格. VBS文件 获取外部参数

  • python 用户交互输入input的4种用法详解

    用户输入 1.使用input来等待用户输入.如 username = input('username:') password = input('password:') print(username,password) 2.格式化输出 第一种方法:字符串拼接 + (不建议使用,太耗内存) name = input("name:") age = input("age:") skill = input("skill:") salary = input(

随机推荐