[Python学习日记-8] 读取用户指令和格式化输出

简介

        平常我们在网上冲浪是经常会遇到需要我们输入数据,然后来进行交互的,而我们本篇要说的读取用户指令就是在命令行当中程序和用户进行交互的一种方法,表现形式就像使用 shell 登录 linux 时需要你输入用户名和密码然后回车确认的那种形式。而在输入前一定是需要说明一下你这个是什么东西用户才好操作吧,这个时候我们就需要使用到格式化输出,例如可以在用户通过 SSH 协议连接到服务器时会显示出 IP、hostname、mac 之类的信息供用户确认,如下图所示

        下面我们一起来看看具体用法

读取用户指令

        在前面提到了服务器在 shell 当中的交互,其实也可以将服务器系统理解为一个巨大的程序,当你通过 SSH 协议连接时就进入了一个无限循环的读取用户指令操作,而在 Python 当中读取用户指令的方法也可以实现类似的功能,不过 Python 中的更加灵活,它可以读取完用户指令后直接执行不同代码,或者通过用户输入的指令执行不同的代码,下面来看一下怎么样写才能读取用户指令

一、单行的读取用户指令

name = input("输入你的名字:")    # input() 就是读取用户指令的方法,这行代码的意思是读取用户指令后赋值给变量 name

 

        这里要说明一下,上面的代码是输入后赋值给变量,但是这并不是一定要这样写的,也可以直接像下面这样写

input("输入你的名字:")

 

        这样写也会触发程序的等待你的输入,只不过你输入的数据并不会保存下来,而是在风中消散,而且后续的代码也不能根据你的输入作出不同的操作,这样来看并不能很好的达到用户输入进行不同操作的目的,所以这种用法并没有什么价值

二、多行的读取用户指令

        有的时候需要用户输入多个数据,例如,录入一个人的姓名、年龄、身高和描述,这个时候就需要先输入姓名后输入年龄、身高和描述,如下所示

name = input("输入你的名字:")
age = input("输入你的年龄:")
height = input("输入你的身高:")
describe = input("介绍一下你自己:")

print(name)
print(age)
print(height)
print(describe)

         在读取用户输入时肯定会遇到一些像身高之类的浮点数,这个时候我们就要进行强制转换了,如下代码所示

name = input("输入你的名字:")
age = input("输入你的年龄:")
height = float(input("输入你的身高:"))    # 这里就是强制转换的用法了
describe = input("介绍一下你自己:")

print(name)
print(age)
print(height)
print(describe)

 

         在拿到用户的输入之后我们的最终目的就是要使用该数据,虽然我们现在还没有学习过判断的代码,其实大部分人也可以看懂,这里我们就直接演示一下

name = input("输入你的名字:")
age = input("输入你的年龄:")
height = float(input("输入你的身高:"))    # 这里就是强制转换的用法了
describe = input("介绍一下你自己:")
question = input("你是不是全家都高(Y/N):")

# 用户输入后的判断,若输入 N 则不执行
if question == "Y" or question == "y":
    print("哇,那还真是高大威猛")

 

        这就是读取用户指令,值得注意的是 input() 方法接收到的数据都以字符串格式(str)处理,如果想要进行公式运算则需要强制转换为想要的类型才行

        这种交互以后会经常使用,在开发过程中很经常用于测试,所以一定要多加练习,熟悉读取用户指令

格式化输出

        格式化输出可以看作是 print() 的升级版,实际应用当中大家都会希望自己的程序输出一个很好看的格式来,而不希望乱七八糟,看起来像乱码,下面举一个格式化的例子看看如果用 print() 来实现会需要怎样的操作

一、普通的格式化输出 

'''
这为需要输出的示例
---------Personal Info----------
Name    : Jove
Age     : 20
Height  : 190.5
Describe: 高大威猛
Answer  : Y
----------End-------------------
'''

        遇到这种输出你怎么实现呢?首先我们先来看看 print() 应该如何输出这种格式 

print("---------Personal Info----------\nName    : Jove\nAge     : 20\nHeight  : 190.5\nDescribe: 高大威猛\nAnswer  : Y\n----------End-------------------")

        不知道大家看了使用 print() 的这一长串输入是什么感觉,我觉得对于初学者来说应该更像是乱码,这里面把正常显示输出的字符串和换行符混合在了一起,这样并不方便也不符合人类书写习惯(挺反人类的),所以我们需要一个更高级的写法,这就是格式化输出,请看下面的示例

msg = '''
---------Personal Info----------
Name    : Jove
Age     : 20
Height  : 190.5
Describe: 高大威猛
Answer  : Y
----------End-------------------
'''

print(msg)

        大家觉得那个更加方便快捷,更加符合人类书写呢? 

二、结合读取用户指定使用格式化输出

         和上面一样我们输出的模版还是以下面的格式,不过 Name、Age、Height、Describe、Answer 分别变成了对应的变量

'''
这为需要输出的示例
---------Personal Info----------
Name    : 变量name
Age     : 变量age
Height  : 变量height
Describe: 变量describe
Answer  : 变量question
----------End-------------------
'''

         同样的我们先看看 print() 是如何输出这一种格式的

name = input("输入你的名字:")
age = input("输入你的年龄:")
height = float(input("输入你的身高:"))
describe = input("介绍一下你自己:")
question = input("你是不是全家都高(Y/N):")

print("---------Personal Info----------\nName    : ",name,"\nAge     : ",age,"\nHeight  : ",height,"\nDescribe: ",describe,"\nAnswer  : ",question,"\n----------End-------------------")

        在加入变量后 print() 的编写就更加得复杂了,而且这一长串的代码在很多屏幕中都是无法完全显示的,这样也为开发带来了不便。而且你会发现,用字符拼接的方式还挺难实现这种格式的输出的,所以一起来学一下新姿势,只需要把要打印的格式先准备好,由于里面的一些信息是需要用户输入的,你没办法预先知道,因此可以先放置个占位符,再把字符串里的占位符与外部的变量做个映射关系就好啦,那我们看看格式化输出如何应对这种状况

name = input("输入你的名字:")
age = input("输入你的年龄:")
height = float(input("输入你的身高:"))
describe = input("介绍一下你自己:")
question = input("你是不是全家都高(Y/N):")

msg = '''
---------Personal Info----------
Name    : %s
Age     : %s
Height  : %.2f
Describe: %s
Answer  : %s
----------End-------------------
''' % (name,age,height,describe,question)
print(msg)

        % 后括号内的变量是按照 '''''' 中占位符的顺序来站位的,对比之下是不是感觉使用格式化输出会完爆 print() 输出呢?  

三、常用的占位符 

        在上面的示例中有一个点是之前没有说的,那就是占位符,使用占位符可以通过字符串的 % 运算符来进行格式化输出,那么这里也一起介绍一下常用的占位符

符号符号说明
%s字符串占位符,用于输出字符串类型的值。
%d整数占位符,用于输出整数类型的值,若输入的是浮点数则会只保留整数。
%f浮点数占位符,用于输出浮点数类型的值,可在前方加入 .+数字 进行限定输出的位数。
%x十六进制占位符,用于输出整数类型的值的十六进制表示。
%百分号占位符,用于输出百分号。

 

  • 33
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 格式化输出字符串是指将变量或常量按照一定的格式输出到屏幕或文件中。在Python中,可以使用字符串格式化操作符“%”或字符串的format()方法来实现。 例如,假设有一个变量x=3.1415926,我们想要将它输出为保留两位小数的浮点数,可以使用以下代码: print("x的值为:%.2f" % x) 或者使用format()方法: print("x的值为:{:.2f}".format(x)) 输出结果为: x的值为:3.14 其中,“%.2f”表示输出浮点数,保留两位小数,“{:.2f}”表示输出浮点数,保留两位小数。 除了浮点数,还可以格式化输出整数、字符串、布尔值等类型的变量或常量。具体的格式化方式可以参考Python官方文档。 ### 回答2: Python作为一种高级编程语言,非常适合处理各种数据类型和格式,其输入输出功能也非常强大。在Python输入输出中,格式化输出字符串是一项非常关键的操作。 格式化输出字符串是指Python将数据按照特定的格式输出到终端上或者写入文件中。Python提供了多种格式化输出字符串的方式,其中最常用的方式是使用字符串格式化操作符“%”。 使用“%”操作符时,需要在字符串中使用特殊字符“%”来表示被替换的位置,然后在字符串后面使用一个元组或字典来传递需要输出的值。例如: ``` name = 'Tom' age = 25 print('My name is %s, and I am %d years old.' % (name, age)) ``` 上述代码中,“%s”和“%d”分别表示需要输出的字符串和数字类型。相应的值用元组(name, age)表示,分别对应字符串变量name和整数变量age。当然,可以使用多个“%”操作符来实现多个变量的输出,例如: ``` hour = 9 minute = 30 second = 45 print("%02d:%02d:%02d" %(hour, minute, second)) ``` 在Python中,还有其他可以实现字符串格式化输出的方法,比如使用format方法,使用f字符串(Python 3.6及以上版本)。这些方法各有特点,但是字符串格式化操作符“%”是最常用的一种方式,可以在很多场景下发挥重要作用。 总之,在Python的输入输出中,格式化输出字符串是非常重要的一项操作,可以帮助我们更好地输出各种类型的数据,提高程序的可读性和可维护性。对于Python开发者来说,熟练掌握字符串格式化输出的各种方法是非常必要的。 ### 回答3: Python中的格式化输出字符串是指将不同类型的数据按照特定的格式输出成字符串。在实际的编程过程中,格式化输出字符串的作用非常重要,可以很好的提高程序的可读性和易用性。 在Python中,格式化输出字符串有两种方式:一种是使用字符串格式化运算符(%),另一种是使用字符串的format方法。 使用字符串格式化运算符(%)的方式,基本语法如下: ``` %s: 字符串类型 %d: 整数类型 %f: 浮点数类型 %x: 十六进制整数类型 %%: 输出% ``` 例如,我们要将字符串和整数类型的数据格式化为字符串输出: ``` name = 'Alice' age = 18 print('My name is %s, I am %d years old.' % (name, age)) ``` 使用字符串的format方法,基本语法如下: ``` {数字格式或关键字格式} ``` 例如,我们要将字符串和整数类型的数据格式化为字符串输出: ``` name = 'Alice' age = 18 print('My name is {}, I am {} years old.'.format(name, age)) ``` 除了以上两种方式,Python中还提供了一种更加强大的格式化字符串方式——f-string,也称为格式化字符串字面量(Formatted string literals)。它的语法比较简单,可以直接在字符串前加上f,然后在字符串中使用{表达式}来嵌入变量值。 例如: ``` name = 'Alice' age = 18 print(f'My name is {name}, I am {age} years old.') ``` 总之,格式化输出字符串的方式有多种,开发者可以根据实际需求自由选择使用。在实际开发中,应该根据数据类型和输出的场景选择适合的方式,以保证输出的字符串具有良好的可读性和易用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JovaZou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值