本教程使用的课本是《Python编程:从入门到实践》,作者:[美] Eric Matthes

本节介绍python中如何与用户进行交互,同时学习另外一个循环运算符while。


image

一、用户输入

大部分的程序都需要和用户输入信息交互,这需要用到input()函数,先看一个简单的例子:

name = input('你叫什么名字?\n')
print('大家好,他叫',name)

image

简单说明一下input()函数的用法:

1、input(‘这是一串提示信息’)括号中的字符串是显示在屏幕上的提示信息,需要我们自己写,提示信息应当写清楚,用户才知道输入什么。

2、name = input(),input会将用户的输入赋值给name变量,这是一个字符串变量。

3、如果需要将输入的字母转换成数字,需要用int()函数。比如输入年龄18,如果直接参与数值运算,Python会报错。


image

通过int()函数转换后,程序可以运行:

age = input('请输入年龄:\n')
age = int(age) +3
print('三年后,您的年龄是:',age)

image

以上的程序只能输入一次,如果需要输入多次,就需要配合while语句。

二、while语句

比如我们需要输入5个人的姓名,代码可以这么写:

current_number = 1
while current_number <= 3:
name = input('请输入来人姓名\n')
print('来人姓名叫:',name)
current_number += 1

image

但是这样的代码不够灵活,我们一般是根据输入的内容结束输入,比如输入quit后while循环结算,可以这么改造一下:

name = ''
while name != 'quit':
name = input('请输入来人姓名\n')
if(name != 'quit'):
print('来人姓名叫:',name)

image

但是,以上的代码还是不够灵活的,比如输入quit或者‘退出’两个字结束while循环,我们就得修改while的条件。为了能让程序更加灵活,常见的做法是设置一个标志,然后在while循环里面修改标志的状态,用来控制程序是继续循环还是退出,请看下面的代码:

active = True
while active:
name = input('请输入来人姓名\n')
if name == 'quit':
active = False
elif name == '退出':
active = False
else:
print('来人姓名叫:',name)

image

三、break和continue

有时候需要提前终止循环,可以用break语句来终止。比如我们对上面的例子稍加改造,可以看到当输入quit的时候,执行break语句,循环终止了。

active = True
while active:
name = input('请输入来人姓名\n')
if name == 'quit':
break
elif name == '退出':
break
else:
print('来人姓名叫:',name)

image

而continue的意思是只终止continue后面的所有代码,直接在从头开始进入下一个循环。continue不会终止所有循环,而break会终止所有循环,见下面的代码:

active = True
while active:
name = input('请输入来人姓名\n')
if name == 'quit':
continue
elif name == '退出':
break
else:
print('来人姓名叫:',name)

image

当我们输入quit的时候,循环并没有终止,又进入下一个循环提示我们再次输入用户名。

四、用while处理列表

估计有人会问,我们已经学过for循环来处理列表了,为什么还需要while语句?两者的区别如下:For循环只适合用来读列表,当需要对列表元素进行增删改的时候只能用while,因为在for循环中改动列表会导致混乱。

比如有个列表有字符串和数字,我们需要将它们分类,变成两个列表,可以这么操作:

Alist = ['a',2,'dd',15,78,22,'ff','kk']
str_list = [] #用来存储字符串
num_list = [] #用来存储数字
while Alist:
if isinstance(Alist[-1],int): #[-1]是指最后一个列表元素
num_list.append(Alist.pop()) #弹出最后一个元素,存入num_list中
if isinstance(Alist[-1],str):
str_list.append(Alist.pop()) #弹出最后一个元素,存入str_list中
print(str_list) #打印字符列表
print(num_list) #打印数字列表

image

最后啰嗦一下,While语句一定要有结束条件,避免陷入死循环。