第四天:语句、表达式与if分支、循环语句

表达式

代码风格

  • 代码格式指南
    • PEP8
    • 缩进4空格
    • 一行不超过79
    • 空行

赋值语句

基本

(x,y) = (5,10)
x
[x,y,z] = [1,2,3]
x
a,b,c = 'uhk'
a
5
1
'u'

序列赋值

- 形如“a,b,c = 'youpin'”这样的赋值语句是会报错的

可以使用一下方法解决:

s = 'youpin'
a,b,c = s[0],s[1],s[2:]
a
c
'y'
'upin'

拓展序列解包赋值

- *变量,获取剩余元素到list
a,b,*c = s
a,
c
('y',)
['u', 'p', 'i', 'n']
a,*b,c = s
a
b
type(b)
'y'
['o', 'u', 'p', 'i']
list
a,b,c,*d = 'ukj' #缺的给d
a
d
'u'
[]

多目标赋值

- a = b = 0

一个例子理解内部存储256限制的问题

a = 'ukj'
b = 'ukj'
a == b
a is b
True
True
a = 'ukj.cc' 
b = 'ukj.cc'
a == b
a is b #因为字符长度问题,长的字符存储超过256位
True
False

下面理解下变量与对象指向的问题

a = 'lok'
b =a 
c = b
a = b = []
a.append(3)
a
b #b的值也因此含有元素3,这个表明内存指向问题
[3]
[3]

参数化赋值

a,b = 1,2
a += b
a
l = [1,2]
l += [9,10]
l
l.extend([3,5,7])
l
3
[1, 2, 9, 10]
[1, 2, 9, 10, 3, 5, 7]

表达式

参数调用

字面值

方法调用

打印操作

  • print()
    • sep='分隔符'
    • end='终止符'
    • file=指定文件
s = '我'
url = '是'
url2 = 'who'
print(s,url,url2)
print(s,url,url2, sep = '|') #分隔符
print(s,url,url2, end = '|')
print(s,url,url2, end = '...\n',file = open('result.txt','w'),encoding = 'utf8') # 把打印的结果塞在文件里
我 是 who
我|是|who
我 是 who|

流程控制

if语句

一般格式

score = 55
if score >= 90:
    print('优秀')
elif score >= 80:
    print('良')
elif score >= 60:
    print('及格')
else:
    print('不及格')
不及格
operation= {
    'add': '添加操作',
    'update': '更新操作',
    'delete': '删除操作'
}
print(operation.get('update'))
更新操作

多重分支

三元运算符

  • a = Y if X else Z
def add(x):
    print(x+10)
operation= {
    'add': add,
    'update': lambda x: print(x*2),
    'delete': lambda x: print(x*3)
}
def default_method(x):
    print('默认方法,什么都不做')    
operation.get('delte',default_method )(10) #这里赋值的10是add函数中的参数x
默认方法,什么都不做

while循环

一般格式

a, b = 0, 10
while a < b:
    print(a)
    a += 1
0
1
2
3
4
5
6
7
8
9

break

while True:
    name = input('请输入一个姓名: ')
    if name == 'stop':
        break
    age = input('请输入年龄: ')
    print('您好:{},您的年龄是:{},欢迎光临'.format(name,age))
print('循环结束')
请输入一个姓名: stop
循环结束
while True: #对比上下两个例子可以发现break是完全跳出整个while循环,而不只是跳出循环分支
    name = input('请输入一个姓名: ')
    if name == 'stop':
        break
    age = input('请输入年龄: ')
    print('您好:{},您的年龄是:{},欢迎光临'.format(name,age))
else:
    print('循环结束')
请输入一个姓名: stop

continue

x = 10
while x:
    x -= 1
    if x %2 != 0:
        continue #当x为奇数时,执行continue,跳过print操作,继续执行x的减法
    print(x, end = ' ')
8 6 4 2 0 
found = False
for x in range(1,5):
    if x == 6:
        found = True
        print('已经找到了', x)
        break
        
if not found:
    print('没找到')
没找到
  • 使用字符串
for i in 'sfesf':
    print(i, end = ' ')
s f e s f 
emp = {
    'name':'Tom',
    'dapartment':'technology',
    'job':'development',
    'salary':90008.0
}
for key in emp:
    print('{} => {}'.format(key, emp[key])) #或者format(emp.get(key,'未找到'))
name => Tom
dapartment => technology
job => development
salary => 90008.0

pass

else

for value in emp.values():
    print(value)
print(type(emp.values()))
Tom
technology
development
90008.0
<class 'dict_values'>
s1 = 'youkingthe.com'
s2 = 'gangwoqushujiao.com'
l = [x for x in s1 if x in s2]
print(l)
['o', 'u', 'i', 'n', 'g', 'h', '.', 'c', 'o', 'm']

for循环

range()

enumerate()

for x in range(1, 101,7): #不包括9
    print(x)
1
8
15
22
29
36
43
50
57
64
71
78
85
92
99
s = 'you'
for (idx,item) in enumerate(s):
    print('{}) {}'.format(idx+1, item))
1) y
2) o
3) u
posted @ 2019-09-01 23:04  败家小林  阅读(205)  评论(0编辑  收藏  举报