python 输入字符串_输入输出,字符串如影随形 | Python基础连载(五)

更好的排版阅读体验,请移步 微信端

开篇

前面两期详细的介绍了字符串及其相关操作,在今后的编程中,你将经常和字符串打交道。一个比较常见的场景就是输入输出,所以本期将结合字符串,讲述最基本同时也是最常用的输入输出语法(input和print),并且会在文章最后补充一些之前没有讲到的字符串的内容。

input()用于接收用户的输入

input()用于接受用户的输入。

>>> input()

当你写入以上代码,并按下回车键后,你会发现光标在闪动,这是在提示你要输入一些东西。

当输入完成后,再按一次回车,你所输入的东西便会打印出来显示在屏幕上,就像下面这样:

图中,黑色的字是我输入的,蓝色的字是打印输出在屏幕上的。

那如果不想打印输出在屏幕上,而是想将输入的内容保存起来,又应该怎么做呢?

简单!只要用一个变量接收input()的输入内容就搞定啦!

这样,输入的内容就被保存在变量x中了。

细心的你或许已经发现了,蓝色的字被一对''包裹着,这不正是之前学习的字符串类型吗?

没错!事实上,你输入input()中的任何类型的数据,都会变成字符串类型。

你可能不太信,因为上面的栗子中,我输入的内容我将在南极找寻你本身就是个字符串类型的,所以输出的自然也是字符串咯。为了证明我说的是对的,咱们可以试着输入一个数字,看看出来的是不是还是数字类型。

看吧,输入的数字2333也变成了字符串str类型。

以上就是input()的基本用法。

那你可能又会想:在提示输入时只有一个光标闪动会不会太不明显了?能不能加一些提示信息呢?

可以!input()中的()里面可以添加提示信息,看这个栗子:

蓝色的字是打印的提示信息,22是我的输入,它被保存在了变量age中。

学会使用print()

大家应该对print()不陌生了,之前的几期内容中也提到过它,今天就对它的常见用法做一个总结。

最基本的,就是将目标内容输出显示到屏幕上:

看起来有些单调,所以可以添加一些描述性的语句,这些语句是字符串类型,所以需要包裹到一对引号内,看下面的栗子:

这样看起来就清晰很多,不至于只有一个数字22而无任何其他信息。

但是对于稍稍有些强迫症的我来说,这还不够完美,因为在输出到屏幕上的内容中,'我的年龄是'和22之间有一个空格,我想要让他们之间无缝对接,那应该怎么做呢?

其实也不难。print()提供了一个seq的参数,可以使你自己设置被逗号分隔的两段内容(这里就是'我的年龄'和age)在输出时用什么符号连接,如果不设置,也就是什么都不写,那么默认就是用空格连接起来。

所以,我们只要将seq设置为空就可以了,就像下面这样:

当然,你也可以设置为:,*,+以及其他你能想到的字符。

现在考虑这么一个问题:

已知两个人的年龄,要求你将两个人的年龄输出到屏幕上(不限格式)。

可以创建一个脚本文件,内容如下:

age1=22

age2=23

print('第一个人的年龄是',age1)

print('第二个人的年龄是',age2)

你将在屏幕上看到以下输出结果:

这时候,题目增加了一个要求:两个print()语句输出的内容必须显示在同一行。

这应该如何实现呢?

其实,print()语句默认在运行结束后打印一个换行符,我们可以通过end参数来修改,比如end='*'表示在运行结束后打印一个*而不是换行符。

所以,问题解决了,在第一个print()语句中指明end为空格即可:

age1=22

age2=23

print('第一个人的年龄是',age1,end=' ')

print('第二个人的年龄是',age2)

输出:

第一个人的年龄是 22 第二个人的年龄是 23

总结一下:

end用于指明在执行完print()语句之后附带着打印的符号,若不指明,则使用默认的换行符

sep用于指名在同一个print()中,用逗号分隔的每个部分之间连接的符号,若不指明,则使用默认的空格

print()的格式化输出

方法1.类似C语言的方法

如果你没有学习过C或者早已忘记了C也不影响阅读,因为下面要讲的跟C本身并无直接关系。

在Python的print()中,可以使用以%开头的东西来占位置,所以形象的称之为占位符。主要有3种,分别是%d,%f,%s,分别对应了整数,浮点数(小数)和字符串。

看下面这个栗子:

>>> age1=22

>>> age2=23

>>> print('第一个人的年龄是%d,第二个人的年龄是%d'%(age1,age2))

第一个人的年龄是22,第二个人的年龄是23

注意,后面的%(age1,age2)中变量的顺序要与前面的占位符的顺序一一对应

再上个栗子,自己跟着敲一下,基本就掌握了。

>>> name='小明'

>>> age=18

>>> favorate_number=3.1415926

>>> print('%s今年%d岁了,他最喜欢的数字是%.2f'%(name,age,favorate_number))#%.2f是指保留两位小数

小明今年18岁了,他最喜欢的数字是3.14

方法2.使用format,用{}作为占位符(ps:我自己经常使用的是这个)

如果占位符{}内什么也不写,那么每一个{}就会按出现的顺序与format中的变量名一一对应,举个栗子就清楚啦:

>>> name='小明'

>>> age=18

>>> favorate_number=3.1415926

>>> print('{}今年{}岁了,他最喜欢的数字是{}'.format(name,age,favorate_number))

小明今年18岁了,他最喜欢的数字是3.1415926

如果占位符{}写了下标,那么format中变量名的位置下标必须与format中的下标从小到大一一对应,看这个栗子:

>>> name='小明'

>>> age=18

>>> favorate_number=3.1415926

>>> print('{1}今年{2}岁了,他最喜欢的数字是{0}'.format(favorate_number,name,age))

小明今年18岁了,他最喜欢的数字是3.1415926

结合下图,或许你能更好的理解上面这个栗子

还有一种情况,就是{}传入的不仅可以是下标,还可以是变量的名字,此时format中传入的是变量名=内容,看栗子:

>>> name='小明'

>>> age=18

>>> favorate_number=3.1415926

>>> print('{name}今年{age}岁了,他最喜欢的数字是{favorate_number}'.format(favorate_number=favorate_number,name=name,age=age))

小明今年18岁了,他最喜欢的数字是3.1415926

字符串的补充内容

在上面关于print()的学习中,我们遇到了换行符,以%开头的占位符等,这些东西又可以牵扯出字符串的几个知识点,下面来看一下。

1.转义字符

Python中使用\代表其后面的第一个字符是普通的字符串,而不是Python中具有某些功能的标识。比如,我想要输出I'm ok到屏幕上,直接写

x='I'm ok'

print(x)

会报错,因为Python认为I被一对单引号包裹,单独成一部分,而后面的m ok'是另一部分。这样,由于后面那部分只有右侧的单引号而没有左侧的单引号,所以产生了语法错误。

这时候,转义字符\就派上用场了!

>>> x='I\'m ok'

>>> print(x)

I'm ok

在\后面的'被认为是一个普通的字符,从而可以直接打印输出了。

还有一种特殊情况,就是在上面的格式化输出中,会用到%s,那万一字符串中正好有一部分叫做%s呢?百字不如一栗,上栗子:

在这个栗子中,有个人的名字叫做"王%s"

>>> age=18

>>> favorate_color='black'

>>> print('王%%s的年龄是%d,王%%s最喜欢的颜色是%s'%(age,favorate_color))

王%s的年龄是18,王%s最喜欢的颜色是black

看,这里的%也充当了转义字符的作用,它使得%s中的%不作为具有某些功能的符号,而只是一个普通字符。

2. 常用转义字符

(本图源自网络)

3.防止转义

看这个栗子:

由于字符串中包含转义字符\,所以会报错。

所以这里要考虑防止转义。

解决方法也很简单,那就是在转义字符\前面再加一个\,这样,\\代表的意思就是一个普通的反斜杠了:

其实,Python还提供了另一种更简单的方法,那就是在要防止转义字符生效的字符串前面加一个r,这个过程正好与上面的转义功能相反

看,在字符串前面加一个r就可以防止转义了,这和加两个\\的作用一模一样:

有问题留言区见,加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/350688.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)

PATH和LD_LIBRARY_PATH本质都是变量,所谓变量的意思就是由别人赋值产生的,直觉往往会让我们添加和减少这个变量本身的某些路径,实际上这是不正确的。正确的做法是我们要去修改赋予这个变量数值的那些配置文件,加一条路径或者减一条…

BERT、MT-DNN、GPT2.0、ERNIE

目前效果较好的大部分的nlp任务都会应用预训练语言模型的迁移知识,主要是采用两阶段的模型。第一阶段进行预训练,一般是训练一个语言模型。最出名的是BERT,BERT的预训练阶段包括两个任务,一个是Masked Language Model,还有一个是N…

tf.argmax

tf.argmax可以认为就是np.argmax。tensorflow使用numpy实现的这个API 简单的说,tf.argmax就是返回最大的那个数值所在的下标。 test np.array([[1, 2, 3], [2, 3, 4], [5, 4, 3], [8, 7,2]])np.argmax(test, 0)   #输出:array([3, 3, 1]…

guava 并发_Google Guava并发– ListenableFuture

guava 并发在上一篇文章中,我介绍了使用Guava库中com.google.common.util.concurrent包中的Monitor类的方法。 在这篇文章中,我将继续介绍Guava并发实用程序,并讨论ListenableFuture接口。 ListenableFuture通过添加接受完成侦听器的方法&…

mysql 递归_「MySQL」 - SQL Cheat Sheet - 未完成

近几个月的心情真是安排的妥妥的,呈现W状。多的不说了,这里对SQL的测试进行简单梳理,制作一份SQL Cheat Sheet。0x01、数据库基本架构Clinet层Server层连接器网络连接建立、管理长连接导致的OOM的自动处理权限管理缓存KV分析器词法分析语法分…

ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别

前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选…

Apache Lucene 7.0即将发布!

Apache Lucene项目可能会在几个月后发布其下一个主要版本7.0! 请记住,Lucene开发人员通常会努力为下一个非主要(功能)发行版移植新功能,而即将发布的6.5已经有了很多重大更改 ,因此新的主要发行版令人兴奋…

windows常用服务命令

windows运行打开服务命令的方法 :在开始-》运行,输入以下命令 gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff---------注销命令 tsshutdn-------60秒倒计时关机命令 explorer--…

springmvc 配置 tag lib_Java自学之springMVC:Hello Spring MVC

学习目的:初识SpringMVC,了解SpringMVC的工作原理Part 1新建一个动态web项目,命名为springMVC,在WEB-INF/lib中,添加所需要的jar包。Part 2在WEB-INF下新建一个web.xml。配置一个DispatcherServlet,所有的请…

GoogLeNet

GoogLeNetInception结构的主要思路是怎样用密集成分来近似最优的局部稀疏结构。对上图做以下说明: 1 . 采用不同大小的卷积核意味着不同大小的感受野,最后拼接意味着不同尺度特征的融合; 2 . 之所以卷积核大小采用1、3和5,主要是为…

1. ThreadPoolExecutor的一个常用的构造方法

ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) 参数说明&#xff1a; -corePoolSize       线程池中所保存的核心线程数。线程池启动后默…

spring boot 启动卡住_SpringBoot集成的44种启动器,你知道几种?

点击蓝字“程序员考拉”欢迎关注&#xff01;啥是应用启动器&#xff1f;SpringBoot集成了spring的很多模块&#xff0c;比如tomcat、redis等等。你用SpringBoot搭建项目&#xff0c;只需要在pom.xml引入相关的依赖&#xff0c;和在配置文件中简单的配置就可以使用相应模块了。…

junit 经典示例_JUnit4参数化和理论示例

junit 经典示例我始终依靠TestNG将参数传递给测试方法&#xff0c;以便为我的测试或套件提供一些灵活性。 但是&#xff0c;使用JUnit4可以实现相同的灵活性。 要使用它很简单&#xff1a; package com.marco.test;import java.util.Arrays;import java.util.Collection;imp…

Spring+Hibernate+Atomikos集成构建JTA的分布式事务--解决多数据源跨库事务

一、概念 分布式事务 分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。简言之&#xff0c;同时操作多个数据库保持事务的统一&#xff0c;达到跨库事务的效果。 JTA JTA&#xff0c;即Java Transaction API&a…

spring el表达式 if else_Spring 获取单例流程(二)

读完这篇文章你将会收获到Spring 中 prototype 类型的 bean 如何做循环依赖检测Spring 中 singleton 类型的 bean 如何做循环依赖检测前言继上一篇文章 Spring 获取单例流程(一) 我们这次继续往下分析一下后面的流程上一篇文章中我们说到&#xff0c;首先我们根据 name 找到其对…

Apache Spark RDD和Java流

几个月前&#xff0c;我很幸运地参加了一些使用Apache Spark的PoC&#xff08;概念验证&#xff09;。 在这里&#xff0c;我有机会使用弹性分布式数据集&#xff08;简称RDD &#xff09;&#xff0c;转换和操作。 几天后&#xff0c;我意识到虽然Apache Spark和JDK是非常不同…

用脚本js把结果转化为固定小数位的形式

function roundTo(base,precision) {var mMath.pow(10,precision);var aMath.round(base * m) / m;return a; } 例如&#xff1a;给定数字n6.3241712&#xff0c;则用roundTo&#xff08;n,0&#xff09;得4&#xff0c;用roundTo(n,7)得到6.3241712转载于:https://www.cnblogs…

存储过程详解

什么是存储过程&#xff1a;存储过程可以说是一个记录集吧&#xff0c;它是由一些T-SQL语句组成的代码块&#xff0c;这些T-SQL语句代码像一个方法一样实现一些功能&#xff08;对单表或多表的增删改查&#xff09;&#xff0c;然后再给这个代码块取一个名字&#xff0c;在用到…

gpu版tensorflow测试

测试程序&#xff1a; import tensorflow as tfwith tf.Session(configtf.ConfigProto(allow_soft_placementTrue, log_device_placementFalse)) as sess:a tf.constant(1)b tf.constant(3)c a bprint(结果是&#xff1a;%d\n 值为&#xff1a;%d % (sess.run(c), sess.ru…

随机森林原理_机器学习(29):随机森林调参实战(信用卡欺诈预测)

点击“机器学习研习社”&#xff0c;“置顶”公众号重磅干货&#xff0c;第一时间送达回复【大礼包】送你机器学习资料与笔记回顾推荐收藏>机器学习文章集合&#xff1a;1-20机器学习(21): Tensorflow Keras手写数字识别机器学习(22): Tensorflow Keras识别猫狗机器学习(23)…