在编程中,输入和输出是非常重要的概念。在前面的章节中,我们主要展示了一些自动生成输出的代码示例,没有用户的参与。而一个较为完整的程序应该能够接受用户的输入,根据输入生成相应的结果,并将结果输出到屏幕上,从而与用户进行交互,增加程序的乐趣和成就感。

一、输入函数:input()

在Python中,我们可以使用input()函数来获取用户的输入。这个函数会将用户输入的内容保存为一个字符串类型的值。需要强调的是,不论用户输入的是什么,input()函数的返回值始终是一个字符串,即使用户输入的是数字1,返回的也是字符串形式的"1",而不是整数1。下面是一些简单的示例代码:

>>> inp  = input("please input your name: ")
please input your name: jack
>>> inp
'jack'
>>> type(inp)
<class 'str'>

>>> age  = input("please input your age: ")
please input your age: 18
>>> age
'18'
>>> type(age)
<class 'str'>

>>> a = input("请输入一个字符:")
请输入一个字符:
>>> a
''

>>> a = input("请输入一个字符:")
请输入一个字符:   前后带有空白   
>>> a
'   前后带有空白   '

第一个例子中,我们使用了inp = input("请输入您的姓名:")的语法,其中"请输入您的姓名:"是一个字符串,作为输入提示显示给用户。input()函数会等待用户输入,并将用户输入的内容作为字符串返回,并将其赋值给inp变量。通过type()函数,我们可以查看inp的数据类型,确实是一个字符串。

第二个例子中,我们输入了年龄18,但由于input()函数返回的是字符串,所以age变量保存的是字符串"18",而不是整数18。

第三个例子中,我们没有输入任何内容,直接按下了回车键。这时,input()函数返回一个空字符串。

第四个例子中,我们输入了有效内容,并观察到输入的前后空白被保留在了返回的字符串中。

通过上述例子的展示,我们可以注意到,input()函数将用户输入原样返回,并且将其包装成一个字符串。然而,这种情况通常不够理想,我们经常需要对用户输入进行处理和判定。

  • 比如对空输入进行处理:
inp = input("请输入你的姓名:  ")

if inp == "":    
    inp = input("姓名不能为空,请重新输入:  ")
  • 比如将字符串转换成数字类型:
age = input("请输入你的年龄:  ")

age = int(age)   # 将字符串转化为整数

if age > 18:
    print("你已经成年!")
else:
    print("还没断奶?")
  • 去除开头的空白lstrip,去除结尾的空白rstrip以及去除两端的空白strip
inp = input("请输入你的姓名:  ")

inp = inp.strip()  # strip的用法在字符串数据类型有讲述

print(inp)
  • 判断输入的字符类型

前面我们在将字符串转化为整数用的是int()函数,这种方式有危险的,看下面的例子:

>>> s = "123"
>>> a = int(s)
>>> a
123
>>> s = "something"
>>> a = int(s)
Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    a = int(s)
ValueError: invalid literal for int() with base 10: 'something'

对于形如“123”, “283242”的字符串,转化没问题,但是对于包含字符、特殊字符的字符串就没办法转化了,会弹出异常错误。所以在使用int函数之前,要先对输入进行判断。我们修改一下上面的例子:

age = input("请输入你的年龄:  ")

if age.isdigit():   # 使用isdigit函数判断输入是否全是数字格式
    age = int(age)   # 将字符串转化为整数
    print("你的年龄是: ", age)
else:
    print("输入不合法!")
  • input函数有时可以巧妙地用于阻塞或暂停程序
print("程序前面部分执行完毕......")

input("请按回车继续......")       # 在这里程序会暂停,等待你的回车动作

print("继续执行程序的后面部分......")

此时的input函数不会将输入保存下来,只是用作暂停程序动作。

二、 print输出函数

print函数我们其实已经不陌生了,前前后后也用了不少次,多少有点经验,明白点它的用法了。

print函数用于将内容格式化显示在标准输出上,通常是屏幕显示器。下面是关于print函数的改写:

print函数可以接受多个参数,这些参数可以是字符串、字符串类型的变量或者可被打印的对象。这些参数之间用逗号“,”进行分隔,形成一个输出序列。print函数会按照参数的顺序逐个打印,并在每个参数之间插入一个空格。

>>> a = "i am"
>>> b = "student"
>>> print(a,"a" , b)
i am a student      # 自动以空格分隔
>>> print(a+"a"+b)
i amastudent        # 无分隔

对于形如print(a+"a"+b)的语句,其实是先计算a+"a"+b的值,然后再通过print打印它。print()会自动执行内部的语句,输出想要的结果。再看一个例子:

>>> a = 10
>>> b = 2
>>> print(sum((a, a*b)))        # 先求a*b,再求和,再打印
30

我们看一下print函数的原型:print(self, *args, sep=' ', end='\n', file=None)

sep参数: 分隔的符号,默认是一个空格;

end参数: 打印后的结束方式,默认为换行符\n。如果,设置end='',则可以不换行,让print在一行内连续打印。活用print的参数,可以实现灵活的打印控制。

>>> a = "i am"
>>> b = "student"
>>> print(a,"a" , b, sep="*")
i am*a*student

三、 print格式化输出

在Python2.6以后,有两种格式化输出的方式。

一种就是类似C语言的printf的%百分号格式化输出,也是Python最基础最常用的格式化输出方式。另一种就是str.format()的方式,在后面的章节会连同颜色控制一块介绍。

这里我们重点讲述一下传统的%百分号格式化输出方式,以下面的语句为例:

print ("我叫 %s 今年 %d 岁!" % ('小明', 10))

首先构造一个字符串,例如 "我叫 %s 今年 %d 岁!",其中需要用其他变量或值替代的部分使用 %s%d 等数据类型占位符来表示。然后在字符串的末尾使用 % 加上一个与占位符数量相同的元组,元组中包含要替代的变量或值。

换句话说,元组中的参数数量应与占位符的数量相匹配,每个参数与前面的占位符一一对应。参数之间使用逗号进行分隔,所有参数都要放在圆括号中。

这是基本的格式化输出用法。更多格式化的详细内容,请查阅相关资料以掌握更多的格式化搭配方法。

格式化符号:

1.png

格式化操作符辅助指令:

格式化操作符辅助指令:

2.png

下面是一些经典的例子:

s = "i am %s" % "jack"

s = "i am %s age %d" % ("jack", 18)

s = "i am %(name)s age %(age)d" % {"name": "jack", "age": 18}

s = "percent %.2f" % 99.97623

s = "i am %(pp).2f" % {"pp": 123.425556, }

s = "i am %.2f %%" % 123.425556

需要特别说明的是,如果你想在print中打印一个%百分符号本身,那么你需要使用%%,两个百分符转义出一个百分符,也就是print("%%")。

如果你对print复杂的格式化控制无爱,对美观也没有要求,那么简单傻瓜式的一路用%s作为占位符,是种省事的做法。例如:

print("%s %s %s %s %s" % (a, b, c, d, e))

标签: python, python下载, Python教程, Python技术, Python学习, Python学习教程, Python语言, Python开发, Python入门教程, Python进阶教程, Python高级教程, Python面试题, Python笔试题, Python编程思想