python输入与输出

python输出值的方式有两种:

  • 表达式语句
  • print()函数

str.format()函数用来格式化输出值,可以让输出的形式多样化;

repr()和str()函数可以将输出值改为字符串。

一. print()函数

print()函数输出不同元素的格式:

print("python")         # 输出字符串
 
 print(20)               # 输出数字
 
 str = "我是变量输出"
 print(str)              # 输出变量
 
 L = [10,"abc",'hello']
 print(L)                # 输出列表
 
 tup = (15,'def',"main")
 print(tup)              # 输出元组
 
 dict = {3.1,415926,'gfh'}
 print(dict)             # 输出字典
 

Pycharm中运行结果:

"D:\Program Files\Python310\python.exe" D:/Project/Ubuntu_Projects/text.py
 python
 20
 我是变量输出
 [10, 'abc', 'hello']
 (15, 'def', 'main')
 {3.1, 'gfh', 415926}
 
 Process finished with exit code 0
 

1.1输出格式化整数

在python中支持格式化输出,但往往会涉及到一些字符串格式化符号,如下表所示:

符号描述

%c格式化字符及其ASCII码%s格式化字符串%d格式化整型%u格式化无符号整型%o格式化无符号八进制%x格式化无符号十六进制%X格式化无符号十六进制(大写)%f格式化浮点数字,.数字f可以指定精度值%e用科学计数法格式化浮点数%g%f和%e的简写%p指针(用十六进制数格式化变量的地址)

%n存储输出字符的数量放进参数列表的下一个变量中

整数既可以使用%s当占位符也可以使用%d当占位符

\textcolor{red}{下面是一些占位的案例:}

==> %d

age = 48
 print("my age is %d" %age)
 print("我的年龄是%d岁" %age)      # 后面的 %之前空格就行,不能用逗号或分隔符

Pycharm中运行结果:

my age is 48
 我的年龄是48岁

==>%f

print("%4.1f" %1.65)    # 输出浮点数长度为4位(不够用空格补全),小数点后保留1位
 print("%f" %1.6)        # 默认小数点后保留6位

Pycharm中运行结果:

1.6
 1.600000

==>%s

name = "宽哥"
 print("大家都叫我%s" %name)

Pycharm中运行结果:

大家都叫我宽哥

\textcolor{blue}{辅助的格式化操作指令:}

  • 定义宽度或者精度 *
  • 常用左对齐 -
  • 在正数前面显示加号 +
  • 在正数前面显示空格 <sp>
  • 映射变量 (var)
  • 在八进制里显示“0“ ;在十六进制里显示 ”0X" #
  • 数字前面填充0而不是默认的空格 0
  • ‘%%’ 输出一个单一的‘%’ %
  • m是显示最小总宽度;n是小数点后的位数 m.n.

类型转换(float):

在python中,类型的转换可以将整形转换成浮点型。

pi = 3.1415926
 print('%8.4f' %pi)      # 字段宽8,精度4
 
 print("pi = %.*f" %(2,pi))      # 输出小数点后的位数为2
 
 pi = 3.142
 print("%010.3f" %pi)        # 用0替代默认的空格
 print("%-10.3f" %pi)        # 左对齐 长度不够显示空格
 print("%+f" %pi)            # 显示正号

Pycharm中运行结果:

3.1416
 pi = 3.14
 000003.142
 3.142               # 长度不够,后面补有空格
 +3.142000

 

二 format()函数格式化输出

2.1 format()位置映射

print("{}:{}".format('3.1415', 926))

2.2 format()关键字映射

print("{server}{1}_{0}".format(926, '3.1415', server='pi:'))

2.3 填充对齐

print("{0}+{1}-{2:>2}".format(1,2,1+2))

在填充对齐中:

  • “^" 是居中对齐
  • "<" 是左对齐
  • ">" 是右对齐

例如下:

print("{}:{}".format('3.1415', 926))
 print("{server}{1}_{0}".format(926, '3.1415', server='pi:'))
 print("{0}+{1}={2:>2}".format(1, 2, 1+2))       # :>2 是将结果右对齐两个单位

pycharm中运行结果:

3.1415:926
 pi:3.1415_926
 1+2= 3

 

三.str()函数与repr()函数

str()函数与repr()函数在很多时候是相同的,除了字符串类型外,当需要直接用对象进行输出调用时用repe(),print()输出调用时用str()。

str()函数与repr()函数的区别在于:

  • str()函数:将值转化为适宜人阅读的字符串的形式,是面向用户的;
  • repr()函数:将值转化为解释器读取的字符串形式,是面向程序员的。

==>str()的语法为:

str.strip([character])

strip是用来删除字符串头部以及尾部的指定字符或者字符序列

character 是需要美化的字符串

str = "+-*/python 3+-*"
 print(str.strip('*,+,-,/'))     # 指定字符串 ”+ - * /“

pycharm中运行的结果:

python 3

str()函数删除了中间的“python"以外的头尾指定的字符

str()函数与repr()函数的大致用法,案例如下:

list1 = 3.1415926
 print(type(str(list1)))
 print(type(repr(list1)))
 print(repr(list1))
 print(str(list1))

pycharm中运行结果:

<class 'str'>
 <class 'str'>
 3.1415926
 3.1415926

两者的结果是没有区别的,但是当我们将字符串传给str()函数时打印时不带引号,repr()函数打印时是带引号的

print('3.1415926'.__repr__())
 print('3.1415926'.__str__())

pycharm中运行结果:

'3.1415926'
 3.1415926

从以上结果来看出,当erpr()作用时,会在字符串外多加一层引号,而在eval()执行时会将字符串的引号去掉,因为这个字符串会被当作变量来处理。如果没有这层引号,那么就无法执行eval(),会生成错误的文件

四.input()函数raw_input()函数

python()提供的读入函数input()函数,在执行函数时会读入一行文本

input()函数和raw input()函数都可以接受字符串,区别在于:

  • python 3.X 中没有了raw_input()函数
  • raw input()函数 直接读取控制台的输入,接受所有类型的输入方式
     
  • input()函数默认接受的是string类型,如果只是输入字符串的话必须将字符串用引号标记
  • input() 在对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float )
  • input() 可接受合法的 python 表达式
     
     
    例如:
str =input("python读入")
 print(str)

结果:

python读入

五.读和写文件

5.1 打开文件

读和写文件open()的基本用法如下:

open(filename, mode=’r',encoding='utf-8',errors=None)

  • filename 是字符串的值
  • mode 是打开的模式
  • encoding参数:用来指定打开文件时的文件编码,默认是UTF-8编码,主要用于打开文本文件
  • errors参数:用来指定在文本文件发生编码错误时如何处理。推荐errors的取值为‘ignore’,表示碰到编码错误时忽略错误,继续执行
     
    \textcolor{blue}{**打开模式mode的参数表**}

字符串说明

rt或r 以只读模式打开文本文件wt或w 以只写模式打开文本文件xt或x以独占创建模式打开文本文件at或a以追加模式打开文本文件rb二进制文件模式,类似于rtwb 二进制文件模式,类似于wtxb二进制文件模式,类似于xtab二进制文件模式,类似于atr+以读写模式打开文本文件,如果文件不存在,则抛出异常w+ 以读写模式打开文本文件,如果文件不存在,则创建文件a+以读追加模式打开文本文件,如果文件不存在,则创建文件rb+ 二进制文件模式,类似于r+wb+二进制文件模式,类似于w+ab+ 二进制文件模式,类似于a+————————————————

5.2 关闭文件

使用close()方法关闭文件

with as提供了代码块,在as后面声明一个资源变量,在with as代码块结束之后自动释放资源

f_name = 'abc.txt'
 with open(f_name) as f:
     content = f.read()

 

5.3 读写文本文件

  1. read(size=-1):从文件中读取字符串,size表示读取的字符数,size=-1表示读取字符数无限制
  2. readline(size=-1):在读取到换行符或者文件尾时返回单行字符串。如已到文件尾,则返回一个空字符串
  3. readlines():读取文件数据到一个字符串列表中,每一行数据都是列表的一个元素
  4. write(s):将字符串s写入文件中,并返回写入的字符串数
  5. writelines(lines):向文件中写入一个字符串列表。不添加行分隔符,因此通常为每一行末尾都提供行分隔符
  6. flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中

5.4 读写二进制文件

  1. read(size=-1):从文件中读取字节,size表示读取的字节数,size=-1表示读取全部字节
  2. readline(size=-1):从文件中读取并返回一行,size是限制读取的字节数
  3. readlines():读取文件数据到一个字节列表中,每一行数据都是列表的一个元素
  4. write(b):写入b字节,并返回写入的字节数
  5. writelines(lines):向文件中写入一个字节列表,不添加行分隔符,因此通常为每一行末尾都提供行分隔符
  6. flush():刷新写缓冲区,在文件没有关闭的情况下将数据写入文件中

\textcolor{red}{当比较字符串和数字的时候,数字永远小于字符串}