1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python学习02 输入输出 控制台输出 格式化字符串的方式 运算符

Python学习02 输入输出 控制台输出 格式化字符串的方式 运算符

时间:2023-02-02 01:51:54

相关推荐

Python学习02 输入输出 控制台输出 格式化字符串的方式 运算符

输入输出

和用户交互

我们把用户将信息传递给程序的过程叫做输入

把程序将结果展示给用户的过程称为输出

输入输出的最基本方法就是控制台。用户通过控制台输入一些字符串,程序再通过控制台打印出一些字符串

那么什么是控制台呢?

对于机械的操作面板,我们叫做控制台,控制台上会有一些按钮,开关,操作杆等等

后来有了计算机之后,控制台的概念也延续下来了

只不过计算机是通过键盘鼠标等进行操作,把操作结果显示到屏幕上

因此,在计算机里,把用户能输入命令,向计算机安排工作,计算机再把结果显示出来的程序,就叫做控制台

pycharm中,下面的那个窗口,就属于控制台,像这样一些通过命令来与用户交互的东西,就叫做控制台

控制台是一种人和计算机交互的最基础方式,但是日常生活中并不常用,因为控制台都是用命令来操作交互的。

日常生活中,更多地是使用图形化界面来交互,通过点击图形等等,来进行交互,可以降低用户的使用门槛。

虽然图形化交互简单,但是图形化界面的程序边写起来并不容易!

基于控制台输出

使用print函数将想输出的输出到控制台

print(a)

print("hello world")

a = 10

print(a)

格式化字符串

如果我们要把数字和字符串混在一起打印,有好几种写法,这就是其中一种,这个语法叫做格式化字符串

f-string

此处的f表示"format"

当我们给这个字符串前面加上一个f前缀的时候,就意味着我们可以通过大括号的方式,往字符串里嵌入变量或表达式

大括号里是表达式或变量都可以

Python中还支持其他的格式化字符串的方法,暂时不做介绍

不是Python设计哲学是简单为主吗,为什么格式化字符串要有好几种解决方案呢?

这是因为Python在发展中,像格式化打印字符串,很多编程语言都进行了各自的探索,比如说C语言,采用了printf,%d%s这样的占位符。C++采用了cout<<,Java采用了字符串拼接,允许字符串和其他类型的值进行拼接。但是这些存在一些问题的

比如C语言这种,一旦%d这些类型不匹配,就会出问题

C++这种整体打印格式非常不直观,可读性很差

Java这里面缺少了一些必要的校验功能。

Python最早支持的格式化字符串是效仿C的printf,并做出了改进,一直到Python3.6版本才开始支持f-string

通过控制台输入

Python使用input函数从控制台读取用户的输入

num = 0

num = input("请输入一个整数")

print(f"你输入的整数是 {num}")

input执行的时候,就会等待用户输入。这个等待可能是一个非常长的等待,完全看用户什么时候输入。用户始终不输入,就会一直等(不见不散)

input返回的值其实是一个字符串,如果只是单纯的拿到用户的输入,然后打印,此时按照str打印即可。如果需要根据用户输入的内容进行算数计算,此时就需要先把读到的字符串转成int,我们可以使用int()进行类型的转换

由此可见,类型在动态变化

如果我们不用类型转换,编译器只会是把字符串相拼接

所以当我们想在字符串中将变量计算时,要这样写

那么如果想把整数转换成字符串呢?str()

想把字符串转成浮点数呢?float()

我们在要实现一个目的之前,要注意自己当前的类型是否符合要求

运算符

运算符分为:算术运算符、关系运算符、逻辑运算符、赋值运算符

算术运算符

像+、-、*、/、**、//、这种进行算数运算的运算符,就做算术运算符

先算乘方、乘除后算加减,如果运算过程中想修改默认的运算顺序,就需要加上括号

除法的第一个问题

在Python中,0不能作为除数

print(15 / 0)

像这种运行时出现的错误,也叫作抛出异常,不同异常会有自己的名字。

如果程序运行过程中抛出异常,后面的代码就会直接中止,不会执行

当计算机遇到不合理的地方,就是直接躺地上摆烂

即使是0.0也不行,有些编程语言中,除整数0会抛出异常,但是除浮点0会得到无穷大,而Python不论除哪种形式的0,都会认为是除0异常

除法的第二个问题

阶段的问题,整数除整数,如果除不尽,得到的是一个小数,不会出现截断的情况

除Python外,大部分编程语言都是截断的

关于%求余数

print(7 % 3)

乘方运算

既能够支持整数次方,又能够支持小数次方(开方运算例如2的0.5次方,就是开方)

//地板除法

地板除法(取整除法),会针对计算的结果进行“向下取整”

例如:print(7 // 2)

得到的结果是3

print(-7 // 2)

得到的结果是-4

关系运算符

关系运算符就是在比较两个操作数之间的“大小”“相等”

<、>、>=、<=、==、!=

1.关系运算符对应的表达式,值是布尔型。表达式符合要求,为真,不符合要求为假

2.关系运算不光可以针对数字进行比较,还能够比较字符串

字符串的比较规则是什么呢?

我们可用三个字概括:字典序

在英文词典上,单词是按照一定的顺序来排列的

先看首字母在字母表上的顺序,谁小谁就排在前面,如果首字母相同,依次比较第二个字母,第三个字母.......

那么如果是中文呢?

针对中文进行字符串大小比较,是没有意义的,至少按照默认的字典序来说,它是没有意义的。在计算机里,表示中文,其实是用多个字节构成的一个比较大的数字来进行比较的。当然中文也不是完全不能比较,比如手机通讯录,这个是使用了第三方库才实现的类似的规则

在C/Java/C++中,字符串之间不能直接使用==、!=来比较

在C语言中,使用strcmp比较,如果直接使用==是来比较两个字符串首元素地址

Java是使用equals方法,如果直接使用==本质上在比较这两个字符串是否是同一个对象

上述两个是一个小众的行为,像Python一样直接使用==和!=来比较字符串内容相同,是大部分编程语言遵守的规则

3.针对浮点数来说,使用==比较相等,存在一定的风险

因为浮点数在内存中的存储和表示,是可能存在误差的。这样的误差在进行算术运算的时候就可能被放大,从而导致==的判定出现误判

虽然0.3与计算出的值已经非常接近了,但是如果直接使用==进行比较,仍然会出现False的情况

正确的比较浮点数相等:作差,看差值是否小于预期的误差范围

注意:Python中支持这种连续小于的写法,判定a - b既是< 0.000001又是> -0.000001

逻辑运算符

and并且。两侧均为真,则为真,否则为假(一假则假)

or或者。两侧有一个是真,就是真(一真则真)

not逻辑取反。只有一个操作数,操作数为True,则返回False,为False则返回True

在C++或Java中,使用&&表示逻辑与,并且。||表示逻辑或,或者。|表示逻辑非,逻辑取反

相比较来看,Python的更加直观

逻辑运算符中的重要细节:短路求值

对于and表达式来说,如果左侧表达式为False,那么整体一定是假,右边的表达式就不计算了

对于or操作来说,如果左侧表达式为True,那么整体的值一定为真,右侧表达式就不计算了

大部分语言都存在这样的短路

赋值运算符

=表示赋值,意思就是把右侧的值填充到左侧的空间中,这个空间得是一个变量才行。10 = 20是不行的

==表示的是比较相等,是算数运算符

可以连续赋值

a = b = 20先把20赋值给b,再把b赋值给a,这种操作叫做链式复制,虽然合法,但是一般不建议这么用,建议一行代码只包含一个操作

还有一种赋值方式:a, b = 10, 20

表示把10赋给了a,把20赋给了b,这种赋值方式叫做多元赋值,能够帮我们解决一些特殊问题:两个变量的交换

复合赋值运算符

+=、-=、*=、/=、%=

在使用复合赋值运算时,必须要先定义,否则会抛异常。因为a += 1是先读取a,再运算

a += 1

print(a)

错,因为要先定义

注意:Python中是不支持++,--这样的自增自减操作的,之所以++a不报错,是因为Python编译器把+当成了正号,--a也不会报错,是把减号当成了负号,最终的值仍然不变,但是后置++和后置--都是语法报错的。

那么为什么不支持呢?因为Python的设计哲学,+=,-+已经很方便了,没必要再设置了。而且前置++和后置++这些的对于初学者来说是非常不友好的。为了没有这些困扰,Python就把删了

前置++和后置++是C语言开的头,Go语言也觉得这样不好,所以废除了前置++,只保留了后置++,而且这个后置++不能取表达式的返回值

其他运算符

除了上述的运算符外,还有一些运算符,比如:身份运算符,判断两个对象是不是相同身份(is, is not),成员运算符判断某个元素是不是被另外一个元素包含(in, not in),位运算符(&,|,~,^, <<, >>)等

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。