条件语句(3.19 update)
1.tab
不等于4个空格
cars = ['a', 'b', 'c']
for car in cars:
if car == 'a' #如果写成 car = 'a'会报错(C++不会)
print("A!") #print前是一个tab键
print("Next") #print前是四个空格
else:
print("Not A")
#结果是语法报错:tab != 4个' '
要求:用四个空格代替缩进
2.Python的bool
变量
首字母是大写的:True
和Fales
x = True #可以
x = true #编译报错
支持用数字充当布尔变量:0
时为False
其余是True
判断列表是否为空
li = []
if li:
print("Not empty!")
#输出 Not Empty
用and
代替C++
中的&&
,用or
代替||
,用not
代替!
(!=
还是可以直接用的)
x = 10
x >=5 && x < 20 #编译报错,识别不了"&&"
x >= 5 and x < 20 #编译通过,输出 True
x != 9 #输出True
!(x==10) #编译报错,识别不了"!"
not (x == 10) #输出 False
4.检查特定的值是/否在列表中
li = ['a', 'b', 'c']
'a' in li
#输出 True
'a' not in li # not 'a' in li 也是可以的
#输出 False
这种用法省去了遍历循环的结构,使得代码更加清晰
Ilike = ['a', 'b', 'c']
Ihave = ['c', 'd', 'e']
for have in Ihave:
if have in Ihave:
print("I like and I have!")
else:
print("I like but I don't have")
5. if-elif-else
结构
li = ['a', 'b', 'c']
if 'a' in li :
print("A in")
elif 'b' not in li
#输出 False
字典(3.21 update)
6.元组用()
,列表用[]
,字典用{}
6.1 字典里的元素规格是Key:Value
,Key和Value的类型可以不统一,相当于C++
里的struct
{'mame':'JP', age:3}
一个字典变量:student = ['name':'Bob' , 'age':18]
dict = {'a':1, 'b':2, 'c':3}
print(dict['a']) #输出 1
dict['a'] = 10
print(dict['a']) #输出 10
6.4 字典的键不能重复,虽然不会报错,但是执行结果是将后一个值更新前面的值
{'a':1,'a':2}
#输出 {'a': 2}
6.5 键对类型有要求:不能使用列表,集合,字典作为列表的键(但是可以作为值),因为不能被hash
(1,2,3).__hash__()
#输出 -378539185
{1,2,3}.__hash__()
#输出
# Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
#TypeError: 'NoneType' object is not callable
6.6 Python里的集合
:用{}
(不过是一元的),比如{'a', 'b', 'c'}
7.“俚语”:if
代替C++
的三元运算符: ?
x = 1 if 5%3 == 0 else 0 #一定要有else否则会报错
print(x)
#输出:0
8.对字典的操作
8.1 字典的遍历
scores = {'alice':95, 'bob':98, 'cathy':97}
#方法1
for key, value in scores.items():
print(key + ' ' + str(value))
#输出:
#cathy 97
#bob 98
#alice 95
print(scores.items())
#输出 [('cathy', 97), ('bob', 98), ('alice', 95)],元组的列表
#方法2
for key in scores.keys():
print(key.title())
#输出:
#Cathy
#Bob
#Alice
print(scores.keys())
#输出 ['cathy', 'bob', 'alice']
#方法3
for value in scores.values():
print(value)
#输出:
#97
#98
#95
print(scores.values())
#输出: [97, 98, 95]
8.2 字典的插入、删除
dict = {'a':1, 'b':2, 'c':3}
#插入——直接地:
dict['d'] = [4,5,6]
print(dict)
#输出 {'a': 1, 'c': 3, 'b': 2, 'd': [4, 5, 6]}
#删除——del
del dict['d']
print(dict)
#输出 {'a': 1, 'c': 3, 'b': 2}
8.3 求字典长度len()
和求和sum()
#求平均分
scores = {'alice':95, 'bob':98, 'cathy':97}
print(sum(scores.values()) / len(scores))
#输出 96 截尾
8.4 强制转化为集合(值是不重复的)
scores = {'alice':99, 'bob':99, 'cathy':99}
for score in set(scores.values())
print(score)
#输出:99
8.5 判断字典是否为空
scores = {}
if scores:
print('nonempty')
else:
peint('empty')
#输出 empty
8.6 小例子1:单词计数
counts = {'jp':5, 'pj':3}
new_name = 'jp'
new_name_ = 'pp'
#counts['jp']++ 是错的,Python里不提供++操作
#正确写法:
counts[new_name] += 1
print(counts[new_name])
#输出 1
#counts[new_name_] += 1 是错的,提示没有这个键
#若想让没有的键可以插入,怎么做?
counts = {'jp':5, 'pj':3}
new_name = 'jp'
new_name_ = 'pp'
counts[new_name_] = 0 if new_name_ not in counts.keys() else counts[new_name_]
counts[new_name_] += 1
print(counts[new_name_])
#输出 1
9 字典和列表的互相/多重嵌套是允许的。
9.1 小例子2:列表×字典 = ?
stu1 = {'name':'jp', 'age':19, 'scores':{'math':98, 'chinese':99, 'english':97}}
stu2 = {'name':'pj', 'age':91, 'scores':{'math':89, 'chinese':99, 'english':79}}
stu3 = {'name':'pp', 'age':99, 'scores':{'math':88, 'chinese':99, 'english':77}}
stus = [stu1, stu2, stu3]
for stu in stus:
print(stu['name'] + ' : ' + str( sum( stu['scores'].values() ) ))
#输出:
#jp : 294
#pj : 267
#pp : 264