上一篇零基础学python编程思维(一) | 数学运算留了个小尾巴,即逻辑运算,这里先补充更新:
四、逻辑运算
a = 10
b = 20
if (a and b): #布尔"与":如果a为False,返回a的值,否则返回b的计算值
print("变量a和b都为True")
else:
print("变量a和b有一个不为True")
if (a or b): #布尔"或":如果a是True,返回a的值,否则返回b的计算值
print("变量a和b至少有一个变量为True")
else:
print("变量a和b都不为True")
a = 0 #此时a为False
if (a and b):
print("变量a和b都为True")
else:
print("变量a和b有一个不为True")
if (a or b):
print("变量a和b至少有一个变量为True")
else:
print("变量a和b都不为True")
if not(a and b): #布尔"不":如果a为True,返回False,否则返回True
print("变量a和b至少有一个为False")
else:
print("变量a和b都为True")
之前一直困惑的有两个地方:一是a和b的赋值运算为什么可以拿来做逻辑判断;二是单独运行第三行代码中的“a and b”时,为什么输出的是b的值20。第一个问题是因为在python中非零整数值就代表True,所以这两个变量可以做逻辑运算,后面更改a的取值为0时,a此时为False。第二个问题我们可以尝试将a与b的位置进行调换得到答案:
a and b
Out[21]: 20
b and a
Out[22]: 10
a or b
Out[23]: 10
b or a
Out[24]: 20
a and b
Out[25]: 20
b and a
Out[26]: 10
a or b
Out[27]: 10
b or a
Out[28]: 20
a = 0
a and b
Out[30]: 0
由上述运行结果可知,当a和b都为True时,and运算的输出结果是最后一个值(再加一个变量c也是同样),or运算的输出结果是第一个值;当a为False时,and运算输出结果为a的值,即0,代表False。
以上是自己的一点思考,如有不对,欢迎指正。
以下为本篇博客内容:
一、字符串
字符串的引用:
my_name = 'Vince'
my_age = 23
my_height = 157
my_weight = 46.5
my_eyes = 'Brown'
my_teeth = 'White'
my_hair = 'Brown'
print(f"Let's talk about {my_name}.")
print(f"She's {my_height} inches tall.")
print(f"She's {my_weight} kilograms heavy.")
print("Actually that's not heavy.")
print(f"She's got {my_eyes} eyes and {my_hair} hair.")
print(f"Her teeth are actually {my_teeth} depending on the coffee.")
total = my_age + my_height + my_weight
print(f"If I add {my_age}, {my_height}, and {my_weight} I get {total}.")
二、列表
1. list
list是一种有序的集合,这里的classmates就是一个list:
classmates=['Michael','Bob','Tracy']
len()获得list元素的个数:
len(classmates)
若一个list为一个空的list,则其长度为0:
Z=[]
len(Z)
用索引来访问list中每个位置的元素,最后一个元素的索引是len(list)-1,索引正序从0开始,倒序从-1开始,即可以用-1做索引直接获取最后一个元素。以此类推,也可获取倒数第2、3个元素:
当索引超出范围时,报IndexError错误。
可以在list中追加元素到末尾,也可以把元素插入到指定位置:
classmates.append('Adam')
classmates.insert(1,'Visstin')
删除末尾的元素用pop(),删除指定位置元素在括号中写索引位置:
classmates.pop(1)
把某个元素替换成其他元素,可以直接赋值给对应的索引位置:
classmates[1]='Sarah'
对list中的元素进行排序:
classmates.sort()
list中的元素的数据类型可以不同,甚至可以是另一个lsit:
L=['Apple',123,True]
s=['python','java',['asp','php'],'scheme']
其中s只有4个元素,其中s[2]是一个list,要取到php可以写作s[2][1],故s为二维数组。
2. tuple
classmates2=('Michael','Bob','Tracy')
tuple也是一种有序列表,当定义了一个tuple,元素必须被确定下来,但一旦初始化就不能更改(不能增加/删除元素,不能赋值成其他元素)。但正因为tuple不可变,所以代码更安全,如果可能,应尽量使用tuple代替list。
若要定义一个空的tuple,可以写成():
t = ()
但要定义一个只有一个元素的tuple,写成(1)定义的只是1这个数字,因为()既可以表示tuple又可以表示数学公式中的小括号。为消除歧义,避免括号被当作运算符使用,只有一个元素的tuple定义时必须加一个,:
t=(1)
t=(1,)
再看下面这个例子:
t=('a','b',['A','B'])
t[2][0]='X'
t[2][1]='Y'
表面看tuple的元素确实变了,但实际上变化的是list的元素。tuple一开始指向的list并没有变成别的list,所以tuple的不变指的是指向永远不变。
虽然元组中的元素值不允许修改,但可以对元组进行连接、复制的组合运算:
tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
tup3 = tup1 + tup2 #连接
tup4 = tup3 * 2 #复制
同样,元组中的元素不允许删除,但可以使用del语句删除整个元组:
tup = ('Google', 'Runoob', 1997, 2000)
print(tup)
del tup
print("删除后的元组tup:")
print(tup)
tuple(iterable)将可迭代系列转换为元组:
list1 = ['Gogle', 'Taobao', 'Runoob', 'Baidu']
tuple1 = tuple(list1)
tuple1