因为金融分析大赛的难度对于我们这种纯新手来说,要求有点高,所以我们整个队决定,将我们的学习任务改为python学习。

学习知识点概要

在Task1里面,是Python的入门,主要讲了变量、运算符和数据类型;位运算以及几种基础语句,例如条件语句、循环语句;还有在写程序过程中,编译运行时可能出现的异常处理。

学习内容

1、变量、运算符与数据类型

注释:有单行注释(用#开头),作用与整行;有多行注释,用(’’’)或(""")括住注释内容

运算符:和C语言的基本相似,但有些许不同,例如在python中除法(/)是直接将浮点数值求出来;
而(//)才是对应着C语言中的(/);还有python有幂的求法(**)

比较运算符:这个和C的相同,可以掠过学习

逻辑运算符:与C语言的&、||、!相似

位运算符:这个有点陌生:

操作符 名称 示例
 ~ 按位取反 ~4
 & 按位与 4 & 5
 按位或
 ^ 按位异或 4 ^ 5
 << 左移 4 << 2 >>右移 4 >> 2

三元运算符:

x, y = 4, 5
if x < y:
    small = x
else:
    small = y

print(small)  # 4

其他运算符:

操作符 名称 示例
 in 存在 ‘A’ in [‘A’, ‘B’, ‘C’]
 not in 不存在 ‘h’ not in [‘A’, ‘B’, ‘C’]
 is 是 “hello” is “hello”
 not is 不是 “hello” is not “hello”

例子:

letters = ['A', 'B', 'C']
if 'A' in letters:
    print('A' + ' exists')
if 'h' not in letters:
    print('h' + ' not exists')

# A exists
# h not exists

变量与赋值:
与C语言相似

数据类型与转换:
Python 里面万物皆对象(object),整型也不例外,只要是对象,就有相应的属性 (attributes) 和方法(methods)。

2、位运算

与我们现学课程C++基本相同。仅记录重要内容

利用位运算实现快速计算
通过 <<,>> 快速计算2的倍数问题。

n << 1 -> 计算 n2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n
(2^m),即乘以 2 的 m 次方
n >> m -> 计算 n/(2^m),即除以 2 的 m 次方
1 << n -> 2^n
通过 ^ 快速交换两个整数。 通过 ^ 快速交换两个整数。

a ^= b
b ^= a
a ^= b
通过 a & (-a) 快速获取a的最后为 1 位置的整数。

00 00 01 01 -> 5
&
11 11 10 11 -> -5

00 00 00 01 -> 1

00 00 11 10 -> 14
&
11 11 00 10 -> -14

00 00 00 10 -> 2

3、条件语句

有if语句、if-else语句、if-else-else语句,这些与C相似。
而assert 关键词为新基础内容:
assert这个关键词我们称之为“断言”,当这个关键词后边的条件为 False 时,程序自动崩溃并抛出AssertionError的异常。
例子:

my_list = ['lsgogroup']
my_list.pop(0)
assert len(my_list) > 0

# AssertionError

循环语句:
有while语句、while-else语句、for语句、for-else语句
这些仅记录用法
While:

count = 0
while count < 3:
    temp = input("猜一猜小姐姐想的是哪个数字?")
    guess = int(temp)
    if guess > 8:
        print("大了,大了")
    else:
        if guess == 8:
            print("你太了解小姐姐的心思了!")
            print("哼,猜对也没有奖励!")
            count = 3
        else:
            print("小了,小了")
    count = count + 1
print("游戏结束,不玩儿啦!")

while - else 循环:

count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = count + 1
else:
    print("%d is not less than 5" % count)
    
# 0 is  less than 5
# 1 is  less than 5
# 2 is  less than 5
# 3 is  less than 5
# 4 is  less than 5
# 5 is not less than 5

for 循环:

for i in 'ILoveLSGO':
    print(i, end=' ')  # 不换行输出

# I L o v e L S G O

for - else 循环:

for num in range(10, 20):  # 迭代 10 到 20 之间的数字
    for i in range(2, num):  # 根据因子迭代
        if num % i == 0:  # 确定第一个因子
            j = num / i  # 计算第二个因子
            print('%d 等于 %d * %d' % (num, i, j))
            break  # 跳出当前循环
    else:  # 循环的 else 部分
        print(num, '是一个质数')

# 10 等于 2 * 5
# 11 是一个质数
# 12 等于 2 * 6
# 13 是一个质数
# 14 等于 2 * 7
# 15 等于 3 * 5
# 16 等于 2 * 8
# 17 是一个质数
# 18 等于 2 * 9
# 19 是一个质数

而range()函数为新学习内容:

range([start,] stop[, step=1])
这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
step=1 表示第三个参数的默认值是1。
range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。
例子:

for i in range(2, 9):  # 不包含9
    print(i)

# 2
# 3
# 4
# 5
# 6
# 7
# 8

enumerate()函数
enumerate(sequence, [start=0])
sequence:一个序列、迭代器或其他支持迭代对象。
start:下标起始位置。
返回 enumerate(枚举) 对象
例子:

seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

break、continue、pass与C语言相似

异常处理:

Python 标准异常总结¶
 BaseException:所有异常的 基类
 Exception:常规异常的 基类
 StandardError:所有的内建标准异常的基类
 ArithmeticError:所有数值计算异常的基类
 FloatingPointError:浮点计算异常
 OverflowError:数值运算超出最大限制
 ZeroDivisionError:除数为零
 AssertionError:断言语句(assert)失败
 AttributeError:尝试访问未知的对象属性
 EOFError:没有内建输入,到达EOF标记
 EnvironmentError:操作系统异常的基类
 IOError:输入/输出操作失败
 OSError:操作系统产生的异常(例如打开一个不存在的文件)
 WindowsError:系统调用失败
 ImportError:导入模块失败的时候
 KeyboardInterrupt:用户中断执行
 LookupError:无效数据查询的基类
 IndexError:索引超出序列的范围
 KeyError:字典中查找一个不存在的关键字
 MemoryError:内存溢出(可通过删除对象释放内存)
 NameError:尝试访问一个不存在的变量
 UnboundLocalError:访问未初始化的本地变量
 ReferenceError:弱引用试图访问已经垃圾回收了的对象
 RuntimeError:一般的运行时异常
 NotImplementedError:尚未实现的方法
 SyntaxError:语法错误导致的异常
 IndentationError:缩进错误导致的异常
 TabError:Tab和空格混用
 SystemError:一般的解释器系统异常
 TypeError:不同类型间的无效操作
 ValueError:传入无效的参数
 UnicodeError:Unicode相关的异常
 UnicodeDecodeError:Unicode解码时的异常
 UnicodeEncodeError:Unicode编码错误导致的异常
 UnicodeTranslateError:Unicode转换错误导致的异常

学习问题与解答

因为之前从来没有学习过python语法,但学过C语言,而这些语言知识基本上都可以拿来融会贯通,所以入门还是没有那么困难.
但是因为是接触的一门新语言,许多语法知识还是不懂

学习思考与总结

从那个金融分析转到Python语言学习,感觉学习的压力降下来了,也更容易入门了,在学习Python过程中,我发现了语言学习的融汇贯通性,因为之前学过C语言;而专业课程中又有C++程序设计,所以上手一门新的语言感觉不是特别难入手。
但学习新语言也有不适应的地方,就是限制于原有的语法方式的方式,总是会联想到原来学到的语言,对于新语言的语法又不熟悉,总是得去找一些网络上额内容来补课。但是我相信,经过这个训练营的学习,我可能很快的上手并且会运用到建模和解决其他问题上。