Python --- 输入、输出、运算符

目录

前言:

一、输入——input()函数

二、输出

1.平平无奇的print

1)种瓜得瓜,种豆得豆

2)print() 默认以换行结束

3)一个 print() 输出多项内容,则需要在输入时每项内容使用逗号分开

2.深藏不露的print

三、运算符

1.算术运算符

取余和整除---负数

2.比较运算符

3.赋值运算符

4.逻辑运算符

5.成员运算符

6.身份运算符

7.三目运算符

8.位运算符

9.运算符优先级


前言:

本篇文章讲解以下三个内容:
1.输入
2.输出
3.运算符

文章中会涉及后面的内容,可以先记住用法,再慢慢理解~

一、输入——input()函数

1.输入

Python 提供了 input(“提示”) 函数用于读取键盘输入,返回值为字符串

eg:

>>> user = input("请输入1,进入登录界面:")
请输入1,进入登录界面:1
>>> user
'1'
>>> type(user)
<class 'str '>

注意:

  1. input() 函数会一直阻塞,等待用户输入,并回车

  2. 不论输入什么,类型都是字符串

二、输出

1.平平无奇的print

Python 提供了 print() 函数用于打印输出

1)种瓜得瓜,种豆得豆

eg:在Pycharm 中打印输出员工年龄 25。如:print(25) 请问 25 是什么类型?
A. 字符串
B. 整数
print(type(25))

选:B

2)print() 默认以换行结束

eg:打印输出 2 次 "hello world"(换行输出)

print("hello world")
print("hello world")

3)一个 print() 输出多项内容,则需要在输入时每项内容使用逗号分开

eg:在 Pycharm 中打印输出 2 次 "hello world" (同行输出)

print("hello world","hello world")

2.深藏不露的print

详细语法:print(sep=' ', end='\n')

  • end:为 print() 函数的结束符,默认为 \n 换行符。

  • sep:为 print() 函数的分隔符,默认为空格字符串。

eg:现有数据如下:

s="我的名字叫"
name="中国"

使用一个 print() 打印输出 "我的名字叫:中国!" (必须使用 s 与 name)

s="我的名字叫"
name="中国"
print(s, name, sep=":", end="!")

三、运算符

1.算术运算符

1)语法

假设 x = 2,y = 4

算术运算符
运算符描述实例注意
+x+y 输出结果为 6
-x-y 输出结果为 -2
*x*y 输出结果为 8
/x/y 输出结果为 0.5结果为浮点数
//整除x//y 输出结果为 0只取整数部分,且向下取整
%取余x%y 输出结果为 2
**x**y 输出结果为 16

注意1:/ 计算不精准

其实不光是/计算不准确,所有浮点数之间的计算都会出现计算结果不准确的问题

>>> 10/3
# 输出:3.3333333333333335

现象:运算的结果不准确
原因:因为 计算机内存 与 CPU 的有穷性 导致使用运算符计算并不精准。

解决:使用 Decimal 函数精确计算。

# 了解:解决浮点数精度问题,借助Decimal()函数
# 模块:需要导入才能使用
# 从 decimal 模块中 导入 Decimal 方法
from decimal import Decimal
print(Decimal(10)/Decimal(3))
# 输出:3.333333333333333333333333333

# 注意:Decimal函数传入的浮点数必须加引号,表示以字符串形式传入
from decimal import Decimal
print(0.1+0.2)
print(Decimal(0.1)+Decimal(0.2))
print(Decimal('0.1')+Decimal('0.2'))

输出:

注意2:// 向下取整

运算符//的运算结果遵循向下取整的规则

print(3//2)     #1

注意3:/ 运算结果为浮点数

print(8/2)  #4.0
判断奇偶性:除以2,结果为0 -- 偶数,结果为1 -- 奇数
# print(x/2)

取余和整除---负数

先看代码:

print(10 % 3)
print(-10 % 3)
print(10 % -3)
print(-10 % -3)

运行结果:

 10%3=1 这个结果是最好理解的,而其他的结果需要通过整除理解,x%y的结果为x除以y的余数,就是x整除y后的余数。

数学里,"负数取余"遵循的是:

如果 a 与 d 是整数,d 非零,那么余数 r 满足 a = q * d + r, q 为整数,且 0 <= |r| < |d|。

计算机语言中,
1,同号的整数运算,所有语言都遵循尽量让商小的原则,所以 12 mod 5 和 -12 mod -5 是一样的方式,结果差一个符号,分别是 2 和 -2 。
2,异号的整数运算,C 和 Java 都是尽可能让商 d 更大[1] (例如 -12 mod 5 的结果对应的是商 d = -2,余 r = -2),而 Python 则是会让商尽可能的小(例如 -12 mod 5 的结果对应的是商 d = -3,余 r = 3)。

取余的实现是建立在整除的基础上的
                                                                  
                                                      x % y = x − ( ( x // y ) ∗ y )

2.比较(关系)运算符

1)语法

假设 x = 2,y = 4

比较运算符
运算符描述实例注意
==等等于x==y 输出结果为 Fales比较数值大小
!=不等于x!=y 输出结果为 True
>大于x>y 输出结果为 False
<小于x<y 输出结果为 True
>=大于等于x>=y 输出结果为False
<=小于等于x<=y 输出结果为True

注意:

  1. <> 运算符已弃用

  2. 数值只比较大小

    print(1 == 1.0) True
  3. 字符串与字符串比较的口诀:逐一比较,且比较的是 ASCII

#字符串比较大小,先比较字符串的第一个元素,谁第一个元素大它就大,如果一样,再比较第二个,以此类推 print("123"<"124") #True 
print("123"<"1")   #False 
print('AB'<'Aa')   #True 
print('C'<'')     #False

注意:这里是' '是空字符

  

        4.>= <=符号中间不能有空格

24 < =25 报错

        5.连续比较

# 24<=28<25等价于24<=28 and 28<25,最终返回结果为Fasle

3.赋值运算符

1)语法

假设 x = 2,y = 4

赋值运算符
运算符描述实例注意
=赋值y=x 是将x的值赋给y,则y为2
+=加法赋值运算符y+=x 等效于y=y+x,则y为6
-=减法赋值运算符y-=x 等效于y=y-x,则y为2
*=减法赋值运算符y*=x 等效于y=y*x,则y为8
/=除法赋值运算符y/=x 等效于y=y/x,则y为2.0
%=取模(余)赋值运算符y%=x 等效于y=y%x,则y为0
**=幂赋值运算符y**=x 等效于y=y**x,则y为16
//=取整除赋值运算符y//=x 等效于y=y//x,则y为2

注意:

  1. Python 不支持 y++ 语法,即自增和自减

  2. += 符号中间不能有空格

注意1:赋值运算符的执行顺序是从右到左

# 复合赋值运算符 +=,一定是先算复合赋值运算符右侧的表达式
        如a = 2 a *= 1 + 1 最终a的值为4
# h+=1 # 报错 h = h + 1 h+1错误,h还没被定义

4.逻辑运算符

1)语法

假设 x = 2,y = 4

逻辑运算符
运算符描述实例注意
and布尔“与”x and y -> x的布尔值 与 y的布尔值 都为True时,结果为True
or布尔“或”x or y -> x的布尔值 与 y的布尔值 有一个为True时,结果为True
not布尔“非”not x -> x 的布尔值为True,则not x 结果为False,反之同理
#数值只要不是0,布尔值就是True
print(bool(5))   #True
print(bool(0))   #False

# 字符串只要不是空字符串,布尔值就是True
print(bool(""))     #False
print(bool(" "))    #True

注意:短路(懒惰)原则

False and True  #懒惰,当and运算符时,遇到第一个为False则不会往后了
True or False   #懒惰,当or运算符时,遇到第一个为True则不会往后了
print(10 or 15) #10 

注意1:and or 非布尔值的运算问题

print("temp" == 'Yes' or 'yes') # 返回yes
存在两个运算符,分别是,比较运算符“==”和逻辑运算符“or”,在运算符优先级中比较运算符的优先级要比逻辑运算符的高,会先进行"temp" == 'Yes'的运算,而'=='是比较两个变量内存中的值是否一致的,一个是temp一个是Yes,很显然他们不一致,返回的值为False;剩下的就是False or 'yes',根据or的运算规律,当两边的条件都为False的时候才返回False,只要有一边为True就会返回一个True,由于逻辑运算符的惰性机制,当or判断第一个条件为True的时候,本就可以得出最后的结果,程序就不会再去判断后面的运算正确与否但是,当第一个条件为False不知道最终的结果是什么,就会判断后面的一个条件是否正确,最后得出结果,但如果参与运算的有非布尔值,就会优先输最后判断位置所在的非布尔值,通过字符串的相关知识我们知道,除了空字符串的布尔值为False,其他字符的布尔值都为True,所以最终的结果为'yes'
print(1 and 2)            # 2
print(0 and 2)            # 0
print(True and 2 )        # 2
print(False and 3)        # False
print('a' == 'a' or 'b')  # True
print('a' or 'b')         # a

5.成员运算符

1)语法

假设 x = 2,y = [1,2,3,4]

成员运算符
运算符描述实例注意
inx in y -> 表示2在[1,2,3,4]中,返回 True
not in不在x not in y -> 表示2不在[1,2,3,4]中,返回False
all_name = ["张三","李四","王五",]
name = input("请输入学生的姓名:")
print(name in all_name)

注意1:# not in   in  不能用在数值身上

# print(1 int 112)  # 报错

注意2:

6.身份运算符

1)语法

假设 x = 10000,y = 10000

身份运算符
运算符描述实例
is判断标识符是否引自同一个对象x is y -> 判断的是 id(x)==id(y) 是否为 True
is not判断标识符是否引自不同对象x is not y -> 判断的是 id(x) is not id(y) 是否为True
print(1 is 1.0)  #False
print(1 == 1.0)  #True
print(id(1) == id(1.0))  #False

注意:is 与 == 的区别

  1. == 比较的是值

  2. is 比较的是否引用同一个对象

7.三目运算符

1)语法

三目运算符的表示语法: 表达式为 True 执行的代码 if 表达式 else 表达式为 False 执行的代码

eg:

x = 1
y = 2
print(x) if x else print(y)  #True

8.位运算符

假设 x = 3 , y = 2

运算符描述实例
&

AND

按位与运算

x & y,将 x 和 y 的对应二进制位进行与运算并返回

3 =>> 11

2 =>> 10

(11)&(10) = 10 = 2

|

OR

按位或运算

x | y,将 x 和 y 的对应二进制位进行或运算并返回

3 =>> 11

2 =>> 10

(11)|(10) = 11 = 3

XOR

按位异或运算

x ^ y,将 x 和 y 的对应二进制位进行异或运算并返回

3 =>> 11

2 =>> 10

(11)^(10) = 01 = 1

~

NOT

按位取反运算

~x,将 x的对应二进制位进行取反运算并返回

3 =>> 11

~3 = 00 = 0

<<

Zero fill  left shift

左移运算

x << y,将 x 的对应二进制位左移 y 位并返回

3的二进制11,向左移动2位后1100 = 12
>>

Signed right shift

右移运算

x >> y,将 x 的对应二进制位右移 y 位并返回

3的二进制11,向右移动2位后00 = 0

9.运算符优先级

1)定义

Python 支持几十种运算符,有的运算符优先级不同,有的运算符优先级相同

2)语法

运算符优先级
运算符描述优先级
**幂运算符最高
*  /  %  //乘 除 取余 整除
+  -加 减
<=  >  <  >=比较运算符
==  !=比较运算符
=  %=  /=  //=  -=  +=  *=  **=赋值运算符
is  is not身份运算符
in  not in成员运算符
not  or  and逻辑运算符最低

注意1:相同运算符的优先级

从左到右

注意2:not or  and的优先级

从高到低:not   、  and   、  or

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

我和程序有一个能跑就行

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

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

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

打赏作者

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

抵扣说明:

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

余额充值