首页 > 编程语言 > 详细

(六)Python语法入门之与用户交互、运算符

时间:2021-07-29 22:10:06      阅读:24      评论:0      收藏:0      [点我收藏+]

(六)Pyhton语法入门之与用户交互、运算符


1.程序与用户交互

1.1什么是与用户交互

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

1.2为什么要与用户交互

为了让计算机能够像人一样与用户沟通交流

比如,过去我们去银行取钱,用户需要把帐号密码告诉柜员,而现在,柜员被ATM机取代,ATM机就是一台计算机,所以用户同样需要将帐号密码告诉计算机,于是我们的程序中必须有相应的机制来控制计算机接收用户输入的内容,并且输出结果

1.3如何与用户交互

交互的本质是输入、输出

1.3.1 输入input

在python3中input功能会等待用户的输入,用户输入任何内容,都存成字符串类型,然后赋值给等号左边的变量名
>>> username=input(‘请输入您的用户名:‘) 
请输入您的用户名:jack # username = "jack"
>>> password=input(‘请输入您的密码:‘) 
请输入您的密码:123 # password = "123"
int可以将纯数字组成的字符串转换成整型
age = input(‘请输入您的年龄‘)
age = int(age)
print(age,type(age))
输出结果type为int

# 了解知识:
# 1、在python2中存在一个raw_input功能与python3中的input功能一模一样
# 2、在python2中还存在一个input功能,需要用户输入一个明确的数据类型,输入什么类型就存成什么类型
>>> l=input(‘输入什么类型就存成什么类型: ‘)
输入什么类型就存成什么类型: [1,2,3]
>>> type(l)
<type ‘list‘>

1.3.2 输出output

>>> 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输出之格式化输出

什么是格式化输出?

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

为什么要格式化输出?

我们经常会输出具有某种固定格式的内容,比如:‘my name is xxx, my age is xxx‘,我们需要做的就是将xxx替换为具体的内容。

如何格式化输出?

需要用到占位符:%s (可以接受任意类型的值) 、%d(只能接受数字)

name = input(‘your name: ‘)
age = input(‘your age: ‘)  # 用户输入18,会存成字符串类型,无法传给%d
print(‘My name is %s,my age is %s‘ %(name,age))

2.基本运算符

2.1算术运算符

算术运算符 描述
+ 加,两个对象相加
- 减,两个对象相减
* 乘,两个对象相乘
/ 除,相除后得到的返回值会保留整数与小数部分
// 取整除,相除后得到的返回值只保留整数部分
% 取余,相除后只返回余数
** 幂,取一个数的n次方

2.2比较运算符

比较运算符 描述
== 等于,两个对象相等则返回True,否则返回False
!= 不等于,两个对象相等则返回False,否则返回Ture
> 大于
>= 大于等于
< 小于
<= 小于等于

2.3赋值运算符

2.3.1增量赋值

赋值运算符 描述
= 简单赋值运算
+= 加法赋值运算
-= 减法赋值运算
*= 乘法赋值运算
/= 除法赋值运算
//= 取整除赋值运算
%= 取余赋值运算
**= 幂赋值运算

2.3.2链式赋值

如果我们想把同一个值同时赋值给多个变量名

>>> z=10
>>> y=z
>>> x=y
>>> x,y,z
(10, 10, 10)
链式赋值指的是可以一行代码搞定
>>> x=y=z=10
>>> x,y,z
(10,10,10)

2.3.3交叉赋值

我们定义两个变量m与n

>>> m=10
>>> n=20

如果我们想将m与n的值交换过来,可以这么做

>>> temp=m
>>> m=n
>>> n=temp
>>> m,n
(20, 10)

交叉赋值指的是一行代码可以搞定这件事

>>> m=10
>>> n=20
>>> m,n=n,m # 交叉赋值
>>> m,n
(20, 10)

2.3.4解压赋值

如果我们想把列表中的多个值取出来依次赋值给多个变量名,可以这么做

>>> nums=[11,22,33,44,55]
>>> a=nums[0]
>>> b=nums[1]
>>> c=nums[2]
>>> d=nums[3]
>>> e=nums[4]
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

解压赋值指的是一行代码可以搞定这件事

>>> a,b,c,d,e=nums # nums包含多个值,就好比一个压缩包,解压赋值因此得名
>>> a,b,c,d,e
(11, 22, 33, 44, 55)

注意,上述解压赋值,等号左边的变量名个数必须与右边包含值的个数相同,否则会报错

#1、变量名少了
>>> a,b=nums
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

#2、变量名多了
>>> a,b,c,d,e,f=nums
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: not enough values to unpack (expected 6, got 5)
但如果我们只想取头尾的几个值,可以用*_匹配
>>> a,b,*_=nums
>>> a,b
(11, 22)
取最后一个数可以用last
>>> *_,last=nums
>>> last
55

ps:字符串、字典、元组、集合类型都支持解压赋值

2.4逻辑运算符

逻辑运算符用于连接多个条件,进行关联判断,会返回布尔值True或False

逻辑运算符 描述
and 逻辑与,用于连接两个条件,两个条件同时成立时才返回Ture,但凡有一个条件为False则返回False
or 逻辑或,用于连接两个条件,两个条件但凡有一个成立就返回Ture,只有在两个条件同时为False时才返回False
not 取反

2.4.1连续多个and

可以用and连接多个条件,会按照从左到右的顺序依次判断,一旦某一个条件为False,则无需再往右判断,可以立即判定最终结果就为False,只有在所有条件的结果都为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 优先级not>and>or

1、三者的优先级关系:not>and>or,同一优先级默认从左往右计算。
>>> 3>4 and 4>3 or 1==3 and ‘x‘ == ‘x‘ or 3 >3
False

2、最好使用括号来区别优先级,其实意义与上面的一样
‘‘‘
原理为:
(1) not的优先级最高,就是把紧跟其后的那个条件结果取反,所以not与紧跟其后的条件不可分割

(2) 如果语句中全部是用and连接,或者全部用or连接,那么按照从左到右的顺序依次计算即可

(3) 如果语句中既有and也有or,那么先用括号把and的左右两个条件给括起来,然后再进行运算
‘‘‘
>>> (3>4 and 4>3) or (1==3 and ‘x‘ == ‘x‘) or 3 >3
False 

3、短路运算:逻辑运算的结果一旦可以确定,那么就以当前处计算到的值作为最终结果返回
>>> 10 and 0 or ‘‘ and 0 or ‘abc‘ or ‘egon‘ == ‘dsb‘ and 333 or 10 > 4
我们用括号来明确一下优先级
>>> (10 and 0) or (‘‘ and 0) or ‘abc‘ or (‘egon‘ == ‘dsb‘ and 333) or 10 > 4
短路:       0      ‘‘            ‘abc‘                    
            假     假              真

返回:                            ‘abc‘

4、短路运算面试题:
>>> 1 or 3
1
>>> 1 and 3
3
>>> 0 and 2 and 1
0
>>> 0 and 2 or 1
1
>>> 0 and 2 or 1 or 4
1
>>> 0 or False and 1
False 

2.5成员运算符

in(某一个对象包含于另外一个对象则返回Ture)

print("abc" in "xxxxabcxxxx")结果为Tureprint("k1" in {‘k1‘: 111, ‘k2‘: 222})结果为Ture(字典读取的是key)

not in(某一个对象没有包含于另外一个对象则返回Ture)

print(‘k3‘ not in {‘k1‘: 111, ‘k2‘: 222})  # 推荐print(not ‘k3‘ in {‘k1‘: 111, ‘k2‘: 222})

ps:字符串、列表、元组、字典、集合都支持成员运算

2.6身份运算符

is(is比较的是id,两个对象的id相同则返回Ture)

>>>x=10>>>y=x>>>id(x),id(y)  # x与y的id相同>>>x is yTure

is not(在两个对象的id不同时 is not会返回Ture)

>>>x=1>>>y=2>>>id(x),id(y)  # x与y的id不同>>>x is not yTure

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

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 # 等号比较的是valueTrue>>> type(x),type(y) # 值相同type肯定相同(<class ‘str‘>, <class ‘str‘>)>>> x is y # is比较的是id,x与y的值相等但id可以不同False

//非原创,仅供交流学习//

(六)Python语法入门之与用户交互、运算符

原文:https://www.cnblogs.com/98ft/p/15076640.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!