2.8 Python 输入与输出

在这里插入图片描述

1. input 标准输入

1.1 input 介绍
Python 内置 input() 函数接收一个标准输入数据, 返回为字符串类型对象.

程序在执行到 input() 函数时会进入待输入状态, 要求输用户在运行工具窗口输入信息, 
输入数据后, 按下回车提交数据(回车也就是尾部换行符 '\n' 会被删除), 程序继续往下运行.
1.2 待输入状态
input()  # 阻塞程序
print('hello world!')  # hello world!

运行下列程序之后, 将鼠标点击到运行工具窗口, 出现一个光标闪烁. 
出现光标后, 表示进入待输入状态, 输入完毕按下回车提交输入的字符串数据, 程序将继续执行.
直接回车的表示提交空字符串.

2022-11-11_01418

1.3 输入提示
input() 函数可以接收一个字符串参数, 该字符串会展示在运行工具窗口, 用于提示.
没有描述信息的话, 输入全靠猜, 在设置提示之后, 简单明了.
input("你好, 请看到这个信息在这里输入你的名称>>>>>: ")
print('久等了···')

2022-11-11_01419

1.4 接收提交数据
将提交的数据赋值给变量, 提交的数据都会被转为字符串类型.
* 注意点 name = input('输入>>:'),   
*                                如果尾部有一个逗号,  name 是一个元组.
# 将提交的数据赋值给变量
name = input("你好, 请看到这个信息在这里输入你的名称>>>>>: ")
print(name)
print(type(name))

2022-11-11_01421

提交的是一个整型, 使用type() 查看提交后数据的类型为字符串类型.
1.5 输入版本差异
Python3 提交的所有数据都会被转换为字符串类型.
Python2 提交的数据类型不会变化.

python3 的的中的 input 其实是 Python2 中的 raw_input().
raw_input() 直接读取控制台的输入, 任何类型的输入它都可以接收, 并转换为字符串.
# Python 2
str1 = input('input>>>:')  # input>>>:(123)
print(str1)  # 123
print(type(str1))  # <type 'int'>

str2 = raw_input('input>>>:')  #  input>>>:(123)
print(str2)  # 123
print(type(str2))  # <type 'str'>

2. print 格式化输出

2.1 print 介绍
Python 内置 print() 函数: 用于格式化输出.
* Python2 如果可以省略括号.

print(self, *args, sep=' ', end='\n', file=None)
    args: 可以同时输出多个对象, 对象之间使用逗号隔开.
    sep:  多个对象的间隔距离, 默认是一个空格.
    end:  设置输出的结尾符号, 默认为换行符.
    file: 输出位置, 默认为当前sys.stdout(系统的标准化输出).
# 一行输出对个对象
print(1, 2, 3) 

2022-11-11_01427

2.2 间隔参数
sep 间隔参数:  多个对象的间隔距离, 默认是一个空格.
# 默认为空格字符
print(1, 2, 3, sep=' ')  

# 没有间隔
print(1, 2, 3, sep='')  

# 间隔为+号
print(1, 2, 3, sep='+')  

2022-11-11_01429

2.3 结尾符参数
end 结尾符参数:  设置输出的结尾符号, 默认为换行符.
# 设置结尾符
print(1, 2, 3, end='')

2022-11-11_01428

2.4 快捷写法
在Pycharm中打印字符串的快捷写法.
输出对象.print tab键

在这里插入图片描述

2.5 格式化输出
1. 占位符
使用占位符在字符串中占位, 之后将内容替换到占位处.
格式化输入原理: 利用占位符, 先占位, 后传值, 一个占位传一个值, 值不能多传, 也不能少传.
转换说明符解释
%d, %i转换为带符号的十进制整数
%o转换为带符号的八进制整数
%x, %X转换为带符号的十六进制整数
%e转化为科学计数法表示的浮点数(e 小写)
%E转化为科学计数法表示的浮点数(E 大写)
%f、%F转化为十进制浮点数
%g智能选择使用 %f 或 %e 格式
%G智能选择使用 %F 或 %E 格式
%c格式化字符及其 ASCII 码
%r使用 repr() 函数将表达式转换为字符串
%s使用 str() 函数将表达式转换为字符串
2. 单参数替换
字符串中使用一个占位符就需要传递一个参数.
print('%6d' % 123)

运行工具窗口显示:
   123

2022-11-21_01594

image-20221111203250959

3. 多参数替换
字符串中使用几个占位符就需要传递几个参数, 参数需要写在元组中.
参数严格按前后顺序依次替换.
print('%s %s' % (1, 2))  # (1, 2) 是一个元组

t1 = 1, 2
print('%s %s' % t1)  # 等同于上面

运行工具窗口显示:
1 2
1 2

202211032301085

4. 字典形式传值
以字典的形式传值, 可以打破位置的限制.
 % 与数据格式字符中间添加中括号, 中括号中写字典中key的名字.
str1 = "我的名字是 %(name)s 我的年龄是 %(age)s." % {"age": "18", "name": 'kid'}
print(str1)  # 我的名字是 kid 我的年龄是 18.

5. 转换类型
# %s可以接收任意类型
print('--> %s <--' % 18)
print('--> %s <--' % [1, 23])
print('--> %s <--' % {'a': 333})
print('--> %d <--' % 18)

运行工具窗口显示:
--> 18 <--
--> [1, 23] <--
--> {'a': 333} <--
--> 18 <--
%d只能接收int 否则提示:
 TypeError: %d format: a number is required, not str.
 类型错误:%d格式:需要数字,而不是字符串.
6. 辅助指令
格式化操作符辅助指令的辅助符号在格式字符串 % 和符号中间使用.
标志说明
*定义宽度或小数点精度.
-指定左对齐.
+输出的数字总要带着符号;正数带+, 负数带-.
显示整数前面的空格(默认就有的, 不是在% 和符号中间使用).
0宽度不足时:数字类型补充 0, 字符类型补充空格.
#显示八进制与十六进制的前缀, 八进制’0’, 十六进制小写’0x’, 大写’0X’.
%‘%%’ 输出一个百分号’%'.
(var)映射变量(字典参数).
m.nm是显示的最小宽度, n 是小数点后面的位数.
# 默认空格占位
print('%6d' % 123)
# 0填充占位
print('%06d' % 123)
# 超出宽度完整显示
print('%6d' % 12345678)
# * 需要提供参数
print('%*d' % (6, 123))


# 10.6 最小宽度为10, 小数占6位, 浮点型默认填充0
print('%10.6f' % 123.456)
print("123%3s56" % 4)  # 123  456 两个空格
# %%在替换字符前面显示%使用
print('%%%d' % 1)

运行工具窗口显示:
   123
000123
12345678
   123
123.456000
123  456
%1
2.6 .format 格式
1. 介绍
.format() 是字符串的一个方法,  Python3 支持, 官方推荐使用!.
字符串中使用 {} 中括号占位, 使用 .format(参数1, 参数2, ...) 方法传递参数.

使用参数的方式:
* 1. 中括号默认是按传入顺序依次使用参数.
* 2. 传入的参数是一个有序的集合, 中括号中使用索引获取对应的值.
* 3. 中括号中写变量名获取值.
# 默认按照位置传值
str1 = '我的名字是 {} 我的年龄是 {}.'.format('kid', 18)
print(str1)

# 按索引传参, 可多次使用
str2 = '我的名字是 {0} {0} {0} 我的年龄是 {1} {1}.'.format('kid', 18)
print(str2)

# 按名称传参, 可多次使用
age = 18
str3 = '我的名字是 {name} {name} {name} 我的年龄是 {age} {age}.'.format(name='kid', age=age)
print(str3)

运行工具窗口显示:
我的名字是 kid 我的年龄是 18.
我的名字是 kid kid kid 我的年龄是 18 18.
我的名字是 kid kid kid 我的年龄是 18 18.
2. 格式
{ x :b}  二进制格式
{ x :o}  八进制格式
{ x :x}  十六进制格
{ x :,}  千分位格式
{ x :.n格式} n 为精度
# f浮点型, .3精确到小数点后3位, 四舍五入, 结果为:1232132.124
print('{salary:.3f}'.format(salary=1232132.12351))

# 转成二进制, 结果为:1111011
print('{0:b}'.format(123))

# 转成八进制, 结果为:11
print('{0:o}'.format(9))

# 转成十六进制, 结果为:f
print('{0:x}'.format(15))

# 千分位格式化, 结果为:99,812,939,393,931
print('{0:,}'.format(99812939393931))

运行工具窗口显示:
1232132.124
1111011
11
f
99,812,939,393,931
3. 辅助指令
先通过索引方式取到值, 然后在冒号后设定填充格式: [填充字符][对齐方式][宽度]
* 填充字符默认不写就是空格
齐方式:
< 左对齐
> 右对齐
^ 居中
#  *<10:左对齐, 总共10个字符, 不够的用*号填充 --> 开始执行******
print('{0:*<10}'.format('开始执行'))

# *>10:右对齐, 总共10个字符, 不够的用*号填充  --> ******开始执行
print('{0:*>10}'.format('开始执行'))

# *^10:居中显示, 总共10个字符, 不够的用*号填充 --> ***开始执行***
print('{0:*^10}'.format('开始执行'))

运行工具窗口显示:
开始执行******
******开始执行
***开始执行***
2.7 f-string 格式
f 格式话输出  Python3.5 开始才推出, 直接在括号内使用变量.
可以使用 .format() 方法的格式与辅助指令.
str1 = 'hello'
num = 1800
print(f'{str1:*^10} {str1} {num:,} {num:x}')  # **hello*** hello 1,800 708

3. 字符串转义

3.1 转义字符
转义字符说明
\n换行符, 将光标位置移到下一行开头.
\r回车符, 将光标位置移到本行开头.
\t水平制表符, 也即 Tab 键, 一般相当于四个空格.
\a蜂鸣器响铃.注意不是喇叭发声, 现在的计算机很多都不带蜂鸣器了, 所以响铃不一定有效.
\b退格(Backspace), 将光标位置移到前一列.
\\反斜线
\’单引号
\"双引号
\在字符串行尾的续行符, 即一行未完, 转到下一行继续写.
3.2 覆盖打印案例
覆盖打印: 打印一次, 延时1, 在打印,
sed="" 设置print不换行打印.
\r 将光标位置移到本行开头, 再次打印的话将上次的内容覆盖.
time.sleep(1) 延时一秒.
import time

print("\r离程序退出还剩%s秒" % 3, end="")
time.sleep(1)
print("\r离程序退出还剩%s秒" % 2, end="")
time.sleep(1)
print("\r离程序退出还剩%s秒" % 1, end="")
time.sleep(1)
print("\r离程序退出还剩%s秒" % 0, end="")

GIF 2022-11-11 21-54-03

import time

# for 循环
for i in range(10):
    print("\r离程序退出还剩%s秒" % (9 - i), end="")
    time.sleep(1)
    

GIF 2022-11-11 21-54-55

4. 练习

1.写一段程序
接收用户输入的用户名、年龄、性别, 然后按照如下格式输出:

    我的名字是:xxx
    我的年龄是:xxx
    我的性别是:xxx


2.用户输入姓名、年龄、工作、爱好 , 然后打印成以下格式
------------ info  -----------
姓名   : KID
年龄   : 22
工作   : XX
爱好   : YY
------------- end ------------

文章的段落全是代码块包裹的, 留言0是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言1是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言2是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言3是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言4是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言5是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言6是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言7是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言8是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言9是为了避免文章提示质量低.


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值