语句与表达式

语句与表达式

I 代码风格:缩进,空四格

if 5 > 0:
    print('ok')

II赋值语句:

1基本赋值

In[2]: x = 5
In[3]: (x,y) = (5,10) #元组赋值,5放x,10放y
In[4]: x
Out[4]: 5
In[5]: y
Out[5]: 10
In[6]: x,y = 5,10 #同上
In[7]: x,y
Out[7]: (5, 10)
In[8]: result = x + 20
In[9]: result
Out[9]: 25
In[10]: [x,y,z] = [10,20,30]
In[11]: y
Out[11]: 20
In[12]: z
Out[12]: 30
In[13]: x,y = y,x
In[14]: y
Out[14]: 10
In[15]: x
Out[15]: 20

2序列赋值

In[16]: [a,b,c] = (1,2,3) #列表,赋值放入元组
In[17]: a
Out[17]: 1
In[18]: b
Out[18]: 2
In[19]: a,b,c = 'uke' #字符串,3个变量,序列赋值对应前面元组,后面字符串
In[20]: a
Out[20]: 'u'
In[21]: b
Out[21]: 'k'
In[22]: c
Out[22]: 'e'
In[23]: a,b,c = 'youpin' #会发现异常
Traceback (most recent call last):
  File "D:Anaconda3libsite-packagesIPythoncoreinteractiveshell.py", line 3296, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-23-54dcac7e48ec>", line 1, in <module>
    a,b,c = 'youpin' #会发现异常
ValueError: too many values to unpack (expected 3)

数量不一致时可以使用切割方法

n[24]: a,b,c = 'you' #y放a上,o放b上,c放u,其实是想c放所有upin进去
In[25]: s = 'youpin' #放入变量里
In[26]: a,b,c = s[0],s[1],s[2:] #s[2:]表示从第3个以后所有信息交给c
In[27]: a
Out[27]: 'y'
In[28]: b
Out[28]: 'o'
In[29]: c
Out[29]: 'upin'

3扩展序列解包赋值

In[32]: a,b,*c = s
In[33]: a
Out[33]: 'y'
In[34]: b
Out[34]: 'o'
In[35]: c
Out[35]: ['u', 'p', 'i', 'n'] #发现把c放入到一个序列里了
n[36]: a,*b,c=s #把中间的塞给b
In[37]: a
Out[37]: 'y'
In[38]: b
Out[38]: ['o', 'u', 'p', 'i']
In[39]: c
Out[39]: 'n'
In[40]: type(b)
Out[40]: list
In[41]: b = ''.join(b) #b形成字符串,join连起来列表
In[42]: b
Out[42]: 'oupi'
In[44]: a,b,c,*d = 'uke' #可以对少的,不能对多的
In[45]: a
Out[45]: 'u'
In[46]: b
Out[46]: 'k'
In[47]: c
Out[47]: 'e'
In[48]: d #对不上就对个列表,不是对none
Out[48]: []
In[49]: a,b,*c = 'uke' #列表装元素
In[50]: c
Out[50]: ['e']

4多目标赋值

In[51]: a = 'uke'
In[52]: b = 'uke'
In[53]: a = = b
  File "<ipython-input-53-5ef276fc0ad3>", line 1
    a = = b
        ^
SyntaxError: invalid syntax

In[54]: a == b
Out[54]: True
In[55]: a is b #内存指向同一个对象吗
Out[55]: True
In[56]: c = 'uke.cc'
In[57]: d = 'uke.cc'
In[58]: c == d
Out[58]: True
In[59]: c is d #内存引用不一致,长的不行
Out[59]: False
In[60]: x = 'uke.'
In[61]: y = 'uke.'
In[62]: x is y
Out[62]: False
In[2]: a = b = c = 'uke'
In[3]: a
Out[3]: 'uke'
In[4]: b
Out[4]: 'uke'
In[5]: c
Out[5]: 'uke'
In[6]: a = 'uke' #同上,此方法啰嗦
In[7]: b = a
In[8]: c = b
In[9]: b
Out[9]: 'uke'
In[10]: c
Out[10]: 'uke'
In[11]: a = b = [] #内存有空列表
In[12]: a
Out[12]: []
In[13]: b
Out[13]: []

 

In[11]: a = b = [] #内存有空列表
In[12]: a
Out[12]: []
In[13]: b
Out[13]: []
In[14]: a.append(3)
In[15]: a
Out[15]: [3]
In[16]: b #看b里有3吗
Out[16]: [3]
In[17]: a = []
In[18]: b = []
In[19]: a.append(3)
In[20]: a
Out[20]: [3]
In[21]: b
Out[21]: []
In[22]: a,b = [],[] #分开赋值
In[23]: a.append(3)
In[24]: b #不受影响
Out[24]: []

5参数化赋值

In[2]: x = 5
In[3]: y = 6
In[4]: x = x + y #把x+y 从新赋给x
In[5]: x
Out[5]: 11
In[6]: a,b = 1,2
In[8]: a += b #右侧只需计算一次
In[9]: a
Out[9]: 3

III表达式

法1.函数调用

In[15]: len('abc')
Out[15]: 3

法2.方法调用

Out[14]: [1, 2, 9, 10, 3, 5, 7]
In[15]: len('abc')
Out[15]: 3
In[16]: l.append(99)
In[17]: l
Out[17]: [1, 2, 9, 10, 3, 5, 7, 99]

法3.print

In[18]: print('hello')
hello
In[19]: s = '优品课堂'
In[20]: url = 'www.codeclassroom.com'
In[22]: print(s,url) #把值挨个打印,中间以空格分隔
优品课堂 www.codeclassroom.com

In[23]: url2 = 'www.uke.cc'
In[25]: print(s,url,url2)
优品课堂 www.codeclassroom.com www.uke.cc
In[25]: print(s,url,url2)
优品课堂 www.codeclassroom.com www.uke.cc
In[26]: print(s,url,url2,sep='#') #sep分割
优品课堂#www.codeclassroom.com#www.uke.cc
In[27]: print(s,url,url2,end='...
')
优品课堂 www.codeclassroom.com www.uke.cc...
print(s,url,url2,end='...
',file=open('result.txt','w')) #当前目录创造一个result的txt文件,w是表明往里写内容

 IV流程控制

1、if语句

score = 75
if score >= 60:
    print('及格')
else:
    print('不及格')
score = 95
if score >= 90:
    print('优秀')
elif score >= 80:
    print('')
elif score >= 60:
    print('及格')
else:
    print('不及格')

多重分支

def add(x): #定义函数接收参数x
    print(x+10)

operation = {
    'add':add, #添加操作,不加括号传递引用
    'update': lambda x:print(x*2), #更新操作,打印x*2
    'delete': lambda x:print(x*3) #删除操作
}

def defalut_method(x):
    print('默认方法,啥都不做') #添加操作



operation.get('add')(10) #传10进来
def add(x): #定义函数接收参数x
    print(x+10)

operation = {
    'add':add, #添加操作,不加括号传递引用
    'update': lambda x:print(x*2), #更新操作,打印x*2
    'delete': lambda x:print(x*3) #删除操作
}

def defalut_method(x):
    print('默认方法,啥都不做') #添加操作



operation.get('update')(10) #传10进来
def add(x): #定义函数接收参数x
    print(x+10)

operation = {
    'add':add, #添加操作,不加括号传递引用
    'update': lambda x:print(x*2), #更新操作,打印x*2
    'delete': lambda x:print(x*3) #删除操作
}

def defalut_method(x):
    print('默认方法,啥都不做') #添加操作



operation.get('delete')(10) #传10进来

如果写错delet 找不到键值可以加一项

def add(x): #定义函数接收参数x
    print(x+10)

operation = {
    'add':add, #添加操作,不加括号传递引用
    'update': lambda x:print(x*2), #更新操作,打印x*2
    'delete': lambda x:print(x*3) #删除操作
}

def defalut_method(x):
    print('默认方法,啥都不做') #添加操作



operation.get('delte',defalut_method)(10) #找不到合适的键值执行method
score = 75
result = '及格' if score >= 60 else '不及格'

print(result)

 2、while语句(循环)(条件测试满足重复循环)

一般格式

x = 'youpinketang'

while x: #x有对象的话
    print(x,end=' ') #打印字符串
    x = x[1:]   #每打印一次,去掉一节,2以后的取出来代替原来字符串
a,b = 0,10

while a < b:
    print(a)
    a += 1

break(循环跳出)

 

while True:
    name = input('请输入您的姓名:') #全局函数,这个是字符串
    if name == 'stop':
        break #跳出循环,从循环里面跳出
    age = input('请输入您的年龄:')#字符串
    print('您好:{},您的年龄是:{},欢迎学习'.format(name,age)) #{}占位符,format传入name

print('循环结束')
while True:
    name = input('请输入您的姓名:') #全局函数,这个是字符串
    if name == 'stop':
        break #跳出循环,从循环里面跳出
    age = input('请输入您的年龄:')#字符串
    print('您好:{},您的年龄是:{},欢迎学习'.format(name,age)) #{}占位符,format传入name
else:#条件不满足,跳出上面整个循环,前提是上面不能执行break了,所以此循环把else忽略了。
    print('循环结束')

pass占位符(想循环不确定放入啥用占位符)

def add(x,y) #定义一个函数,但是想不清里面放啥用占位符
      pass

continue

x = 10

while x:
    x -= 1
    if x %2 != 0: #不等于0证明是奇数,执行continue,等于0的打出来
        continue
    print(x,end=' ')
x = 10

while x:
    x -= 1
    print(x,end=' ')
    

3、for循环 :range支持迭代遍历

在循环里找信息做标记:前面声明变量,后面判断变量

别扭型:

found = False

for x in range(1,5): #做个for循环,range产生一个数字范围,如1-5
    if x == 6:
        found = True
        print('已经找到了',x)
        break


if  not found:
    print('没找到 ')

正常型:

for x in range(1,5):
    if x ==6:
        print('有这个数字',x)
        break
else:
    print('未找到')

遍历:

for x in 目标序列: #先考虑在什么地方遍历找到放x里

for x in [1,2,3,4]: #先考虑在什么地方遍历找到放x里,列表放到循环里遍历
    print(x, end='')
for x in ['uke.cc','youpinketang.com','codeclassroom.com']: #字符串也可以
    print(x, end='')

做累加操作

sum = 0

for x in [1,2,3,4,5]:
    sum += x
print(sum)

字典表

emp = {
    'name':'Tom',
    'department':'technolgy',
    'job':'development',
    'salary':9000.00
}
#想打印他们的信息,用遍历的方式
for key in emp: #用key得到它的键,出来的字典表是乱序,哈希算法的缘故
    print(key)

想列出后面的值

emp = {
    'name':'Tom',
    'department':'technolgy',
    'job':'development',
    'salary':9000.00
}
#想打印他们的信息,用遍历的方式
for key in emp: #用key得到它的键,出来的字典表是乱序
    print('{} => {}'.format(key, emp[key]))#前面显示键后面显示值,格式化字符串的占位符,这不是字典表了,emp是找key

如果有些找不到对不上,可以加个get

print('{} => {}'.format(key, emp.get(key,'未找到')))

字典表遍历时可只遍历键或值

emp = {
    'name':'Tom',
    'department':'technolgy',
    'job':'development',
    'salary':9000.00
}

for value in emp.values():
    print(value) #他们值不是列表,是视图

print(type(emp.values()))

 找两个序列中重叠的部分

s1 = 'youpinketang.com'
s2 = 'codeclassroom.com'

result = []#声明列表

for x in s1:
    if x in s2: #是不是在第二个字符串能找到s1
        result.append(x)

print(result)
s1 = 'youpinketang.com'
s2 = 'codeclassroom.com'


l = [x for x in s1 if x in s2] #下返回列表list,先声明,找到第一个字符串里所有的字符放入l
#只打印在第二里也存在的
print(l)

rage():函数生成一个序列,不是列表

for x in range(1,100):#生成1-100序列,不包括100
    print(x)

隔一个打一个,加进个步长

for x in range(0,101,2):#生成1-100序列,不包括100,各两个打一个
    print(x)

 enumerate():函数,帮助获取目前帮助循环的第几项目

s = 'youpinketang' #打印索引

for (idx,item) in enumerate(s): #遍历,在每一个里面加个序列,调用函数包住s,idx获取索引,(idx,item)是个元组
 print('{}){}'.format(idx + 1,item)) #加1符合阅读习惯
原文地址:https://www.cnblogs.com/shirleysu90/p/11957915.html