因为金融分析大赛的难度对于我们这种纯新手来说,要求有点高,所以我们整个队决定,将我们的学习任务改为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++程序设计,所以上手一门新的语言感觉不是特别难入手。
但学习新语言也有不适应的地方,就是限制于原有的语法方式的方式,总是会联想到原来学到的语言,对于新语言的语法又不熟悉,总是得去找一些网络上额内容来补课。但是我相信,经过这个训练营的学习,我可能很快的上手并且会运用到建模和解决其他问题上。