以python中的print()为例,我们可以发现打印完成之后,光标自动跳转到了下一行,是因为换行符发挥了作用,解释器在我们输出的内容后面,加上了一个换行符“\n”。
>>> print("abc\n\ndef") # 换行符实现的效果
abc
def
>>> print("abc", end=" ")
abc # 输出的结果没有换行
若我们输出的内容中,有与换行符“\n”一样内容,可以通过增加转义符或者原生字符串来解决。
>>> print("zhangsan is \nb")
zhangsan is
b
>>> print("zhangsan is \\nb") # 增加转义符
zhangsan is \nb
>>> print(r"zhangsan is \nb") # 增加前缀"r",即rawstring原生字符串,让特殊字符直接显示
zhangsan is \nb
在python中进行计算,会遇到计算结果精确度的问题
>>> 10 / 3
3.3333333333333335
计算结果出现误差的原因,是由于计算机数据是以二进制储存的,而我们平时运算是在十进制下进行的,所以精确度在转换后出现了偏差。
①直接定义布尔类型的变量值
>>> tag=True
②通过比较运算得到布尔值
>>> 10 == 10
隐式布尔值为False的数据类型有:0,None,空(空字符串、空列表、空字典),其他的数据类型隐式布尔值均为True
>>> print(bool(0)) # False
>>> print(bool(None)) # False
>>> print(bool([])) # False
>>> print(bool({})) # False
>>> print(bool("")) # False
>>> print(bool(" ")) # True,空格也是字符串
>>> print(bool(1)) # True
>>> print(bool(["a"])) # True
在基本的数据类型中,按照数据是否可变,可以进行如下分类:
在值改变的情况下,id号不变,即内存地址不变,证明就是在改原来内存空间中的值,即原值可变。
>>> l1=[111,"aaaa"]
>>> print(id(l1)) # 2458812741376
>>> l1[0]=222222
>>> print(l1) # [222222, ‘aaaa‘]
>>> print(id(l1)) # 2458812741376
>>> dic={‘k1‘:111,‘k2‘:222}
>>> print(id(dic)) # 2197454021376
>>> dic[‘k1‘]="abc"
>>> print(dic) # {‘k1‘: ‘abc‘, ‘k2‘: 222}
>>> print(id(dic)) # 2197454021376
在值改变的情况下,id号也随之改变,即内存地址变了,证明不是在改原来内存空间中的值,而是申请了新的内存空间,产生了新的值,即原值不可变。
>>> x = 10
>>> print(id(x)) # 140726143342528
>>> x = 11
>>> print(id(x)) # 140726143342560
>>> x = 10.3
>>> print(id(x)) # 1544494893584
>>> x = 11.4
>>> print(id(x)) # 1544493433776
>>> x = "abc"
>>> print(id(x)) # 1544494430384
>>> x = "aBc"
>>> print(id(x)) # 1544494511600
字典的value可以是任意类型,但是字典的key必须是不可变类型。
>>> dic = {1111111: "abc", "k2": "def", 3.1: ‘aaa‘}
>>> print(dic[1111111])
abc
>>> dic={[1,2,3]:"abc"}
TypeError: unhashable type: ‘list‘ # 了解:不可哈希类型就是可变类型,可哈希类型就是不可变类型
>>> age=18
>>> age += 1
>>> print(age)
19
作用:可以在不丧失可读性的情况下,起到简化代码的作用。
>>> x=10
>>> y=x
>>> z=y
>>> print(x, y, z)
10 10 10
>>> z = y = x = 10
>>> print(x, y, z)
10 10 10
>>> print(id(x), id(y), id(z))
140726143342528 140726143342528 140726143342528
>>> m = 111
>>> n = 222
>>> temp=m
>>> m=n
>>> n=temp
>>> print(m, n)
111 222
>>> m, n = n, m
>>> print(m, n)
111 222
在列表的取值过程中,常常会遇到值较多,不方便取值的情况,此时使用解压赋值,可以使代码更简洁。
>>> salaries = [1.1, 2.2, 3.3, 4.4, 5.5]
>>> mon0 = salaries[0]
>>> mon1 = salaries[1]
>>> mon2 = salaries[2]
>>> mon3 = salaries[3]
>>> mon4 = salaries[4]
>>> print(mon0, mon1, mon2, mon3, mon4)
1.1 2.2 3.3 4.4 5.5
>>> mon0, mon1, mon2, mon3, mon4 = salaries # 使用一行代码实现,解决代码冗余的问题
>>> print(mon0, mon1, mon2, mon3, mon4)
1.1 2.2 3.3 4.4 5.5
>>> mon0, mon1, mon2, *_ = salaries
>>> *_, x, y, z = salaries
>>> x, *_, z = salaries
注意:变量名的个数必须与包含的值个数相同,不能多也不能少。若需要取开头几个,或者取结尾几个,或者开头以及结尾的几个同时取,可以使用”*_“作为填充的变量名实现。
对于字典来说,解压赋值取出来的是字典的key。
>>> dic = {"k1": 111, "k2": 222}
>>> x, y = dic
>>> print(x, y)
k1 k2
了解:字符串也可以解压赋值
>>> a,b,c,d,e="hello"
>>> print(a,type(a),b,c,d,e)
h <class ‘str‘> e l l o
>>> x = [‘a‘, ‘b‘]
>>> y = [‘a‘, ‘b‘]
>>> print(x == y)
True
>>> x = [‘a‘, ‘b‘]
>>> y = [‘a‘, ‘b‘]
>>> print(id(x)) # 2212916950784
>>> print(id(y)) # 2212917372096
>>> print(x is y)
False
is判断的结果为True,即二者的id一样,即二者的内存地址相同,即二者就是一个东西,即值一定相等。
如果==判断的结果为True,即二者的值一样,那么二者的内存地址可能不一样。
如果要判断一个变量是否等于None、True、False,推荐使用is去判断。
在python3中,可以实现如下操作,简化代码:
age = 19
age >= 18 and age <= 20
print(20 >= age >= 18) # True
print(18 <= age <= 20) # True
if条件判断是一段代码块,使用一个或多个条件,根据条件判断的结果(True or False),选择执行的子代码块,得出结果。
为了控制计算机能像人一样去完成判断的过程。
if 条件1:
子代码块1
elif 条件2:
子代码块2
elif 条件3:
子代码块3
...
else:
子代码块
if结构中,只有一个if是可以的
inp_name=input(‘你的名字: ‘)
if inp_name == "egon":
print(‘输入正确‘)
print(‘其他代码‘)
inp_name=input("你的名字: ")
if inp_name == "egon":
print("您是super VIP")
elif inp_name == "张三":
print("您是法外狂徒")
elif inp_name == "李四":
print("您是张三的好朋友")
print("其他代码")
inp_name = input("你的用户名: ")
inp_pwd = input("你的密码: ")
if inp_name == "zhangsan" and inp_pwd == "123":
print("登录成功")
else:
print("用户名或密码错误,请重新输入正确的用户名和密码")
"""
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
"""
score = input("请输入您的成绩: ")
score = int(score)
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("普通")
else:
print("很差")
print("ok0")
if 10 < 3: # 由于结果为False,子代码块不执行
if 1 == 1:
print("ok1")
print("ok2")
print("ok3")
print("ok4") # ok0 ok4
原文:https://www.cnblogs.com/huluhuluwa/p/13047032.html