zoukankan      html  css  js  c++  java
  • Python Revisited Day 01

    逻辑操作符

    身份操作符 is

    a = ['AAA', 3, None]
    b = ['AAA', 3, None]
    a is b #False
    b = a
    a is b #True
    

    身份比较速度快,原因是对直接对内存地址进行比较,所以内容相同的俩个变量结果却是false。

    a = None
    a is None #True
    

    比较操作符
    这里只要注意一点

    0 <= a <= 10
    

    这种结链比较是可以的,夸张一点

    a < b < c < e < d
    

    逻辑操作符
    逻辑操作符:and or not
    其中 and or 都使用short-circuit逻辑实现

    5 and 2 #2
    2 and 5 #5
    5 and 2 and 3 #3
    5 or 2 #5
    2 or 5 #2
    2 or 3 or 5 #2
    2 or 3 and 5 #2
    2 and 3 or 5 #3
    2 or 3 and 4 and 5 and 6 and 7 #2
    2 or 3 and 4 and 0 #2
    0 or 3 and 4 and 5 #5
    True and 1 # 1
    1 and True # True
    

    还可以得出结论, and 的优先级大于 or

    算术操作符

    a = 1
    a += 8
    a = a + 8
    

    这里需要记住的是,python中,int数据类型是固定的,一旦赋值就不能改变。因此,对固定的对象使用增强的赋值操作符时,实际上是创建一个对象来存储结果,之后,目标对象重新绑定。所以上面的:a+=8语句执行的时候,python 会计算a+8,将所得的结果9存储到新的int对象,之后将a重新绑定为引用这个新的int对象(如果a原来引用的原始对象没有其他对象引用,就会进入垃圾收集流程)。
    第二 a+=8 与 a = a + 8 并不一致,这个没怎么明白。
    特殊用法:

    name = 'xxx'
    name + 'ccc' #xxxccc
    name += 'ccc' #xxx ccc
    
    

    与int一样 字符串也是固定的,所以流程和上述相同,
    不过列表在python中是可变的

    a = ['a', 'b', 'c']
    a += 'ddd' #['a', 'b', 'c', 'd', 'd', 'd']
    a += ['ddd'] #['a', 'b', 'c', 'd', 'd', 'd', 'ddd']
    a += 5 #报错
    

    列表 += 右边的操作数必须是 iterable 对象

    题目

    1.生成数字

    import random
    
    digits = [7, 1, 9, 4, 2, 8, 3, 0, 6]
    Digits = [[random.randint(1, 1000) for j in range(7)] for i in range(10)]
    
    try:
        row = 0
        while row < 7:
            line = ''
            column = 0
            while column < len(digits):
                number = int(digits[column])
                digit = Digits[number]
                line += str(digit[row]) + ' '
                column += 1
            print(line)
            row += 1
    except IndexError:
        print('usage: <number>')
    except ValueError as err:
        print(err, 'in', digits)
    

    2.循环输入数字输出长度,和,最大最小值,平均值

    try:
        digits = []
        while True:
            a = input('enter a number or Enter to finish: ')
            if not a and a != 0:
                break
            else:
                digits.append(int(a))
        print('numbers: ', digits)
        print('count = ', len(digits), ' sum = ', sum(digits), 
        ' lowest = ', min(digits), ' highest = ', max(digits),
              'mean = ', sum(digits) / len(digits))
    except ValueError as err:
        print(err, 'in', a)
    
    1. 超级超级巨大巨大罪过的诗
    import random
    
    article = ['a', 'the', 'this', 'that']
    theme = ['cat', 'fish', 'dog', 'pig', 'car', 'house', 'tree']
    verb = ['flied', 'walked', 'runned', 'smiled', 'jumped']
    adv = ['loudly', 'quietly', 'well', 'badly']
    
    
    try:
        count = 0
        while count < 5:
            line = article[random.randint(0, len(article) - 1)] + ' ' +
                   theme[random.randint(0, len(theme) - 1)] + ' ' +
                   verb[random.randint(0, len(verb) - 1)] + ' ' +
                   adv[random.randint(0, len(adv) - 1)]
            print(line)
            count += 1
    except IndexError:
        print('error index')
    

    4.用户指定行数

    import random
    
    article = ['a', 'the', 'this', 'that']
    theme = ['cat', 'fish', 'dog', 'pig', 'car', 'house', 'tree']
    verb = ['flied', 'walked', 'runned', 'smiled', 'jumped']
    adv = ['loudly', 'quietly', 'well', 'badly']
    
    
    try:
        count = 0
        uplimit = int(input('the rows you need between 1 and 10: '))
        if not uplimit or not 1<= uplimit <= 10:
            uplimit = 5
        while count < uplimit:
            line = article[random.randint(0, len(article) - 1)] + ' ' +
                   theme[random.randint(0, len(theme) - 1)] + ' ' +
                   verb[random.randint(0, len(verb) - 1)] + ' ' +
                   adv[random.randint(0, len(adv) - 1)]
            print(line)
            count += 1
    except IndexError:
        print('error index')
    

    5.自制排序程序(从小到大)

    import random
    
    number = [random.randint(1, 99) for i in range(10)]
    print(number)
    try:
        length = len(number)
        for i in range(length - 1):
            for j in range(i + 1, length):
                if number[i] > number[j]:
                    number[i], number[j] = number[j], number[i]
        print(number)
    except IndexError:
        print('index error')
    

    很粗暴的一种排序方式,不过不计较这么多了,简单易懂就行。
    。。。

  • 相关阅读:
    【学习总结】iOS 的机制
    【刷题】面筋-游戏测试-对二次元游戏的认识
    【JAVA】Mac下查看已安装的jdk版本及其安装目录
    【JAVA】MacBook安装Java环境及eclipse
    【学习总结】哈希表:哈希函数构造;哈希表解决地址冲突的方法
    【刷题】面筋-JAVA-hashmap和hashtable
    【刷题】面筋-测开-软件测试的生命周期
    【学习总结】jupyter notebook中以Markdown格式显示文字信息
    【学习总结】n & (n-1)
    【学习总结】IOS系统和Android系统的区别
  • 原文地址:https://www.cnblogs.com/MTandHJ/p/10528126.html
Copyright © 2011-2022 走看看