python基础——输入和输出详解

本文最后更新于:1 年前

(一)概念:

此处说明的输入和输出是指控制台从键盘输入文本和输出在屏幕指定文字,暂不包括向文件的输入和输出。

输入是基于input()的函数输入,输出是基于print()的函数输出。

此外还将讲解print涉及的格式化输出。

(二)基于input()函数的输入:

1.基本用法:

input()函数的作用是获得键盘的输入数据。

一般格式: 变量名=input(<提示字符串>)

input()函数在接受输入前先输出提示字符串,等待用户的键盘输入。

以用户输入回车符作为结束的标志,随后input()函数结束,返回用户输入的字符串(回车符被丢弃)。

返回的字符串就是一行文本,且无论用户输入任何内容均被视为字符串,如需要其他类型,应对返回内容进行类型转化。

返回值被用来给变量赋值,否则返回值被丢弃,不会保留。

2.进阶用法:

  • 在提示字符串处加入变量:因为提示字符串必须是字符串的形式输出到终端,所以,如果希望在提示字符串处输出变量值,需要对非字符型的变量进行强制的类型转换。

  • input一次输入多个变量值:需要调用它所有的split()分割函数,这个函数的作用是一旦在输入中遇到它()中的内容就以其为分界符将输入内容分割开,对应的分割出的输入串数量我们也应该设置对应数量的变量来接收内容。另外,split后返回的是一个字符串列表,如要强制类型转换,需要在最外面再加一个map()对每个被分割的输入进行强制类型转换。(详见下方代码)

3.代码展示:

1
2
3
4
5
6
7
testinput1 = "请输入"
name = input(testinput1+"名字\n") #input()内有变量,\n是换行符
number = int(input(testinput1+name+"他的序号数\n")) #对input结果进行强制类型转化
subject1,subject2,subject3 = input(testinput1+str(number)+"号的三个学科名,以\",\"分割\n").split(",") #input()得到多个输入值
score1,score2,score3 = map(float,input(testinput1+str(number)+"的三科成绩,以\",\"分割\n").split(",")) #对input的多个输入值分别进行强制类型转化
print(subject1,subject2,subject3) #展示结果
print(score1,score2,score3)

(三)基于print()函数的输出:

print()函数可以说是python中大家认识最多的一个函数了,本次将会进行详细介绍。

1.基本用法:

函数语法为:

1
print(*objects, sep=' ', end='\n', file=sys.stdout)

其中objects对应复数,表示可以一次输出多个对象,用“,”进行分隔。

sep -用于间隔多个对象,默认是一个空格。

end -用于设定以什么为结尾,默认是换行符\n。

file -要写入的文件对象。

print()函数没有返回值。

print()函数可以输出任何变量,包括但不限于数值型、布尔型、列表型、字典型等等。

print()输出时end=的后面参数可以用条件语句来判断不同情况下输出的具体值。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
print(1) #输出数值
print("欧尼酱~") #输出字符串
print(1,2,3,"面对疾风吧") #输出多个对象
print("www","面对疾风吧","com",sep=".") #输出多个对象,并以"."分隔
a=3.1415926
b="abcdefg"
print(a,b) #可以输出变量
list = [1, 'a', 3,14]
print(list) #输出列表变量
tuple = (1, 'a', 3,14)
print(tuple) #输出元组变量
dict = {'a': 1, 'b': 2}
print(dict) # 输出字典变量

l= [1, 2, 3, 4]
for x in l:
print(x, end=' ' if x != l[-1] else '\n') #不同情况输出的分隔符不同。

2.格式化输出:

print中允许数据的格式化输出。其格式控制符和转换说明符用"%"分隔(C语言用逗号)

%字符在字符串中,是格式控制符,在后面则是转换说明符,%是标记转换的开始。

如:

1
2
3
s = 'fxfILY'
x = len(s)
print('The length of %s is %d' % (s,x))

形式为***‘ 其他+%格式化字符 +其他 ’ % exp***

数据的格式化输出符号和描述:

1
2
3
4
5
6
7
8
9
10
11
12
13
%c 格式化字符及其ASCII码
%s 格式化字符串
%d 格式化整数
%u 格式化无符号整型
%o 格式化无符号八进制数
%x 格式化无符号十六进制数
%X 格式化无符号十六进制数(大写)
%f 格式化浮点数字,可指定小数点后的精度
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址

格式化操作符辅助指令:

1
2
3
4
5
6
7
8
9
*     定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
PI = 3.141592653
print('%10.3f'%PI) #字段宽10,精度3
#输出结果: 3.142(左边5个空格,以保证指定宽度为10成立,3f表明精确到小数点后三位)

PI=3.1415926
print('%-10.3f' %PI) #-表示左对齐
#输出结果:3.142 (左对齐,仍为10个字符,但空格在右边)

PI=3.1415926
print('%+f' % PI) #+表示显式正负号
#输出结果:+3.141593(显示正号,类型f的默认精度为6位小数)

PI=3.1415926
print('%010.3f'%PI) #0表示转换值若位数不够则用0填充
#输出结果:000003.142(字段宽度为10,精度为3,不足处用0填充空白)

3.format()函数:

format()函数和%的格式化字符串功能类似,但更加强大。

形式上,format()函数用{|}来代替%("|"可以是数字,代表后面的参数位置,也可以是变量名称,参数传递时直接传递给该变量),可以用接收参数的方式对字符串进行格式化。

参数位置可以不按显式顺序,参数也可以不用或者用多次。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
print('Hello {0}! I am {1}'.format('python','zzh')) #按顺序
# 输入结果:Hello python! I am zzh

print('Hello {} I am {}'.format('python','zzh')) #默认顺序
# 输入结果:Hello python! I am zzh

print('Hello {1}! I am {0}. {0} is alaways smart!'.format('zzh','python')) #不按顺序+多次使用一个变量
# 输出结果:Hello python! I am zzh. zzh is alaways smart!

name = 'zzh'
noname = '???'
print('{a} love {b}'.format(a = name,b = noname)) #使用变量
#输出结果:zzh love ???

name= ['zzh', '???']
print('{l[0]} love {l[1]}'.format(l =name )) #使用列表

names={'name1':'zzh','name2':'???'}
print('{name[name1]} love {name[name2]}'.format(name=names)) #用字典

4.join()函数:

将一个包含多个字符串的可迭代对象,转为用分隔符s连接的字符。

不是字符串的可以参考上面的map()函数,第一个参数设置为str,将每个可迭代对象转化过来即可。

1
2
3
number=[0,1,2,3,4,5,6]
print("?".join(map(str,(number))))
#输出结果: 0?1?2?3?4?5?6

其他内容暂且不再详细介绍,暂时掌握这些基本够用了。


python基础——输入和输出详解
https://github.com/xiaohei07/xiaohei07.github.io/2023/03/18/python基础——输入和输出详解/
作者
07xiaohei
发布于
2023年3月18日
许可协议