python输入输出-python 输入输出 - 刘江的python教程

输入输出

阅读: 18476

评论:6

无论是从我们一开始的“hello world”,还是前面章节的里各种例子,基本都是些“自说自话”,展示类的代码片段。只有能够接收用户输入,根据输入动态生成结果,并输出到屏幕上展示出来,才算一个较为完整,起码是有那么点乐趣或者说成就的简单程序。

一、 input输入函数

input函数:获取用户输入,保存成一个字符串。重要的话,说两遍,input函数的返回值是一个字符串类型。哪怕你输入的是个数字1,返回给你的只会是字符串“1”,而不是

整数1。下面是一些简单的展示例子:

>>> inp = input("please input your name: ")

please input your name: jack

>>> inp

'jack'

>>> type(inp)

>>> age = input("please input your age: ")

please input your age: 18

>>> age

'18'

>>> type(age)

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

请输入一个字符:

>>> a

''

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

请输入一个字符: 前后带有空白

>>> a

' 前后带有空白 '

第一个例子中,inp = input("please input your name: "),input函数里可以提供一个字符串,用来给用户进行输入提示。input函数的返回值赋值给inp这个变量后,inp里就保存了用户输入的值。

type是Python内置的函数之一,非常有用,用于查看对象的数据类型。例子中的inp是一个str字符串类型,这验证了我们前面说的话。

第二个例子,我们输入了年龄18,但age里保存的是一个“18”的字符串。

第三个例子,什么都没输入,返回的是一个空字符串。

第四个例子,有效输入的前后空白被保留在了返回的字符串中。

从上面例子的展示中,我们不难发现,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 "", line 1, in

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=' ', file=None)

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

end参数: 打印后的结束方式,默认为换行符 。如果,设置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来代替。然后在字符串的后面用%加一个同样数量变量或值的元组。

也就是前面有多少个%符号,后面就要提供多少个参数值,每个参数值之间用逗号隔开,所有参数用圆括号括起来。每个参数与前面的%一一对应,并且数据类型也要能够合法对应。

这是基本用法,更多的格式见下图,请自行查阅,然后掌握格式的搭配方法。

格式化符号:

1762677-20201007160425621-65170524.png

格式化操作符辅助指令:

格式化操作符辅助指令:

1762677-20201007160428239-1236855138.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))

评论总数: 6

default_avatar_male_50.gif?Expires=1563508945&ssig=mRQgQBY%2FEU&KID=imgbed,tva

给小编+火腿肠

By

JACK_123_45995 On

2019年7月19日 11:30

回复

default_avatar_male_50.gif

print输出函数print输出函数

By

用户5888865032 On

2019年3月20日 11:03

回复

005FZhVTjw8fanveko55rj30hs0h2dgu.jpg

print输入函数print输入函数

By

如果我是个大帅比 On

2019年1月7日 09:00

回复

90475a83ly8frte93umfqj20j60j64qp.jpg

打卡

By

我是陈独秀我还想发言 On

2018年12月15日 12:41

回复

8078015ajw1e8qgp5bmzyj2050050aa8.jpg

左边的双引号似乎是全角。。。

By

_Zane On

2018年6月14日 14:34

回复

e2f9f9cdjw8f2xmhpvecpj20go0go0sw.jpg

给小编打Call

By

海上有个树荫_hhh On

2018年3月11日 12:03

回复

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值