python的平方运算符_python入门之与用户交互、运算符

一、程序与用户交互

1.1 什么是与用户交互

用户交互就是人往计算机中input/输入数据,计算机print/输出结果

1.2 为什么要与用户交互

为了让计算机像人一样和用户交流

例如,当你去ATM机上取钱,那ATM机需要提示你输入用户名和密码,如果密码正确,则告诉你登录成功,如果密码错误,则告诉你失败。

1.3 如何与用户交互

交互的本质就是输入和输出的过程

# 输入

name = input('请输入你的用户名:') # 请输入你的登录名

age = input('请输入你的年龄:') # 请输入你的年龄

# 输出

print(name) # 输出用户名

print(age) # 输出年龄

1.3.1 输入input

# 在python3中input功能会等待用户的输入,用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名

>>> username=input('请输入您的用户名:')

请输入您的用户名:jack # username = "jack"

>>> password=input('请输入您的密码:')

请输入您的密码:123 # password = "123"

# 了解知识:

# 1、在python2中存在一个raw_input功能与python3中的input功能一模一样

# 2、在python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型

>>> l=input('输入什么类型就存成什么类型: ')

输入什么类型就存成什么类型: [1,2,3]

>>> type(l)

1.3.1 输出print

>>> print('hello world') # 只输出一个值

hello world

>>> print('first','second','third') # 一次性输出多个值,值用逗号隔开

first second third

# 默认print功能有一个end参数,该参数的默认值为"\n"(代表换行),可以将end参数的值改成任意其它字符

print("aaaa",end='')

print("bbbb",end='&')

print("cccc",end='@')

#整体输出结果为:aaaabbbb&cccc@

1.3.3 输出之格式化输出

把一段字符串里面的某些内容替换掉之后再输出,就是格式化输出

1.3.3.1 占位符格式化输出

占位符类型的格式化输出有%s和%d

%s可以接收任意类型的变量

name = 'sean'

age = 50

print('my name is %s,my age is %s.' % (name, age)) # 利用占位符格式化输出

my name is sean,my age is 50.

# 尝试调换括号里面的数值

print('my name is %s,my age is %s.' % (age, name))

my name is 50,my age is sean. # 发现结果也更改了

%d只能接收数字类型的变量

name = 'sean'

age = 50

print('my name is %s,my age is %s.' % (name, age)) # 利用占位符格式化输出

my name is sean,my age is 50.

# 尝试调换括号里面的数值

print('my name is %s,my age is %s.' % (age, name))

my name is 50,my age is sean. # 发现结果也更改了

1.3.3.2 .format()方法

name = input('请输入你的名字:')

age = input('请输入你的年龄:')

print('my name is {},my age is {}.'.format(name, age))

my name is kody,my age is 21.

# 尝试更换后面的name和age位置,看前面传入的值是否会调换位置

print('my name is {},my age is {}.'.format(age, name))

my name is 21,my age is kody. # 值得位置确实调换了

# 思考,如何让值得位置不受name和age接收的限制?

print('my name is {names},my age is {ages}.'.format(ages=age, names=name))

请输入你的名字:kody

请输入你的年龄:21

my name is kody,my age is 21.

1.3.3.3 f-string方法

此方法是在python3.6以后才有的新特性

name = input('请输入你的名字:')

age = input('请输入你的年龄:')

print(f'my name is {name}, my age is {age}.')

请输入你的名字:kody

请输入你的年龄:21

my name is kody, my age is 21.

1.3.3.4 扩展:保留几位小数

保留两位小数

a = 12345.2487

print('%.2f' % a)

12345.25

保留三位小数

a = 12345.2487

print('%.3f' % a)

12345.249

1.4 python2和python3中input的区别

1.4.1 python3中的input()

在python3中input接收用户的输入,无论用户输入的是什么,最终返回的一定是字符串

name = input('请输入你的用户名:')

age = input('请输入你的年龄:')

print(name)

print(type(name)) # 打印name的类型

print(age)

print(type(age)) # 打印age的类型

请输入你的用户名:kody

请输入你的年龄:21

kody

# 姓名返回的是字符串

21

# 年龄返回的是字符串

Process finished with exit code 0

1.4.2 python2中的input()

在python2中,我们使用input函数必须先声明要输入的类型

>>> name = input("请输入你的姓名:")

请输入你的姓名:sean # 直接输入姓名,发现下面报错

Traceback (most recent call last):

File "", line 1, in

File "", line 1, in

NameError: name 'sean' is not defined

>>> input("请输入你的姓名:")

请输入你的姓名:"sean" # 在输入的时候加上双引号,声明输入内容为字符串

'sean' # 没有报错,正常输出,返回的结果为字符串

>>> input(">>:")

>>:1 # 直接输入数字1

1 # 返回结果为数字类型

>>> input(">>:")

>>:[1,2] # 输入列表

[1, 2] # 返回结果为列表

在python2中的raw_input与python3中input()作用相同,返回结果是字符串

>>> raw_input(">>:")

>>:sean # 输入sean

'sean' # 返回结果为字符串

>>> raw_input(">>:")

>>:12 # 输入数字

'12' # 返回结果为字符串

1.4.3 总结

python2中的raw_input与python3中input作用相同 **

二、基本运算符

2.1 算数运算符

基本的加减乘除和数学上的加减乘除使用符号是一致的

# // 取整

>>> 9 // 3

3

>>> 9 // 2

4

>>>

# % 取模(取余数)

>>> 9 % 3

0

>>> 9 % 2

1

>>>

# ** 求平方

>>> 2 ** 2

4

>>> 2 ** 3

8

2.2 比较运算符

用来对两个值进行比较,返回的是bool值

2.3、赋值运算符

2.3.1 增量赋值

# +=

a = 1

a += 3 # a = a + 3

print(a)

4

# -=

a = 1

a -= 1 # a = a -1

print(a)

0

# *=

a = 2

a *= 3 # a = a * 3

print(a)

6

# /=

a = 4

a /= 2 # a = a / 2

print(a)

2

2.3.2 链式赋值

x = y = z = 1

print(x, y, z)

1 1 1

2.3.3 交叉赋值

a = 1

b = 2

a, b = b, a

print(a, b)

2 1

2.3.4 解压赋值

l1 = [1, 2, 3, 4, 5, 6]

a, b, c, d, e, f = l1

print(a, b, c, d, e, f)

1 2 3 4 5 6

# 当我们的字母没有数字多呢?

l1 = [1, 2, 3, 4, 5, 6]

a, b, c, d = l1

print(a, b, c, d) # 报错

Traceback (most recent call last):

File "G:/python项目/test/test.py", line 2, in

a, b, c, d = l1

ValueError: too many values to unpack (expected 4)

# 如何解决?在后面添加*_

l1 = [1, 2, 3, 4, 5, 6]

a, b, c, d, *_ = l1

print(a, b, c, d)

1 2 3 4

# 在前面添加*_

l1 = [1, 2, 3, 4, 5, 6]

*_, a, b, c, d = l1

print(a, b, c, d)

3 4 5 6

2.4 逻辑运算符

逻辑运算符返回的也是bool值

"""

与 或 非

and or not

"""

a = 1

b = 2

c = 3

print(a < b and b > c) # and:如果有一个式子不符合条件,整条式子都为False

print(a > b and b < c)

print(a < b or b < c) # or:只要有一个式子符合条件,整条式子都为True

print(a > b or b < c)

print(not a < b) # 取反

print(a < b and b < c or a > c) # True

print(a > b or b < c and a > c) # False

2.4.1 连续多个and

可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为Fase,则无需再往右判断,可以立即判定最终结果就为Fae,只有在所有条件的结果都为True的情况下,最终结果才为True。

>>> 2 > 1 and 1 != 1 and True and 3 > 2 # 判断完第二个条件,就立即结束,得的最终结果为False

False

2.4.2 连续多个or

连续多个相同的or,会按照从左到右的顺序依次判断,一旦某一个条件为True,则无需再往右判断,可以立即判定最终结果为True,只有在所有条件的结果都为False的情况下,最终结果才为False

>>> 2 > 1 or 1 != 1 or True or 3 > 2 # 判断完第一个条件,就立即结束,得的最终结果为True

True

2.4.3 混用and、or、not

not > and > or

三者混用,需要按照优先级和短路操作符(惰性求值)来运算

逻辑操作符and 和or 也称作短路操作符(short-circuitlogic)或者惰性求值(lazy evaluation):它们的参数从左向右解析,一旦结果可以确定就停止。例如,如果A 和C 为真而B 为假, A and B and C 不会解析C 。作用于一个普通的非逻辑值时,短路操作符的返回值通常是最后一个变量。因此,逻辑运算符的理解也与C语言中不同。举个例子:

>>> 3 and 4

4

>>> 4 and 3

3

>>> 4 or 3

4

>>> 3 or 4

3

在以上例子中,按照C语言对的思维,3 and 4即3与4为3,但是由于是短路操作符,结果为4,是因为and运算符必须所有的运算数都是true才会把所有的运算数都解析,并且返回最后一个变量,即为4;改变一下顺序4 and 3 ,结果也不一样,即为3.

简而言之:

多个and条件下都为True,就返回最后一个值

多个and条件下若是有一个False,就返回False

而或逻辑(or),即只要有一个是true,即停止解析运算数,返回最近为true的变量,即 3 or 4,值为3;改变顺序4 or 3 即为4.

简而言之:

多个or条件下都为True,就返回第一个值

多个or条件下若是有一个True,就返回True

2.5 成员运算符

注意:虽然下述两种判断可以达到相同的效果,但我们推荐使用第二种格式,因为 not in语乂更加明确

2.6 身份运算符

需要强调的是:==双等号比较的是value是否相等,而is比较的是i是否相等

#1. id相同,内存地址必定相同,意味着type和value必定相同

#2. value相同type肯定相同,但id可能不同,如下

>>> x='Info Tony:18'

>>> y='Info Tony:18'

>>> id(x),id(y) # x与y的id不同,但是二者的值相同

(4327422640, 4327422256)

>>> x == y # 等号比较的是value

True

>>> type(x),type(y) # 值相同type肯定相同

(, )

>>> x is y # is比较的是id,x与y的值相等但id可以不同

False

2.7 所有运算符的优先级比较