zoukankan      html  css  js  c++  java
  • 第四天:语句、表达式与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 = '...
    ',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
    
  • 相关阅读:
    βVAE学习
    条件GAN学习
    epoll的事件的状态
    RST报文产生的情况
    SIGPIPE信号产生原因
    methods事件
    for列表渲染
    if条件渲染
    data数据
    vue的简单上手
  • 原文地址:https://www.cnblogs.com/linyk/p/11443874.html
Copyright © 2011-2022 走看看