一、打印语句和变量
print("Hello,Python!")
print("Hello,Python!")
二、注释
# 这是使用#号注释, 该语句不会被运行, 使用快捷键 Ctrl + / 切换
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
print("Hello, Python!")
Hello, Python!
三、多行语句
"""Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示"""
total = 1 + \
2 + \
3
total
四、数据类型¶ Python有五个标准的数据类型:
Numbers(数字) : int(有符号整型) long(长整型[也可以代表八进制和十六进制]) float(浮点型) complex(复数)
List(列表)
Tuple(元组)
String(字符串)
Dictionary(字典)
4.1 数字Numbers
'''数据类型转换'''
print(float(2))
print(int(2.9))
2.0 2
'''运算符'''
print(10 + 4) # 加法
print(10 - 4) # 减法
print(10 * 4) # 乘法
print(10 / 4) # 除法
print(10 % 4) # 求余 常用于周期控制
14 6 40 2.5 2
4.2 列表List '''定义: 方括号定义的元素组合,元素之间用逗号隔开''' [1,2,3]
'''创建列表,使用方括号[]定义'''
empty_list = []
empty_list = list()
instruments = ['600010.SHA', '000001.SZA', '300010.SZA']
instruments
'''列表元素个数'''
print(len(instruments))
'''获取列表的第一个元素'''
print(instruments[0])
'''获取列表的最后一个元素'''
print(instruments[-1])
3 600010.SHA 300010.SZA
'''列表的引用'''
print(instruments[0:2]) # 输出列表的前两个元素
print(instruments[::2]) # 从第一个元素instruments[0]到最后一个元素每间隔2个元素采样组成List输出
['600010.SHA', '000001.SZA'] ['600010.SHA', '300010.SZA']
'''添加一个元素'''
instruments.append('300102.SZA')
print(instruments)
['600010.SHA', '000001.SZA', '300010.SZA', '300102.SZA']
'''添加多个元素'''
instruments = instruments + ['300010.SZA', '600033.SHA']
print(instruments)
['600010.SHA', '000001.SZA', '300010.SZA', '300102.SZA', '300010.SZA', '600033.SHA']
'''修改第一个元素'''
instruments[0] = '600012.SHA'
instruments
'''删除第一个出现元素'''
instruments.remove('600033.SHA')
instruments
'''排序 sort'''
instruments.sort() # 直接修改原始list
instruments
'''反向排序,直接修改原始list'''
instruments.sort(reverse=True)
instruments
'''使用reversed函数反向排序, 不修改原始list'''
list(reversed(instruments))
'''查询元素的索引'''
instruments.index('000001.SZA')
'''查询列表中指定元素出现次数'''
instruments.count('000001.SZA')
4.3 元组
'''使用圆括号()定义的元素组合,与列表的不同在于元组的元素是不能修改的'''
digits = (0, 1, 'two')
digits
'''将列表转化为元组'''
digits = tuple([10, 'a'])
digits
'''选取元组的第一个元素'''
digits[0]
'''元组无法赋值,提示错误'''
digits[0]=1
4.4 字符串
'''创建字符串'''
s = '000001.SZA'
'''计算字符串长度'''
print(len(s))
'''字符串索引'''
print(s[0])
print(s[0:6])
10 0 000001
4.5 集合
'''使用花括号{}定义的元素组合,集合中元素是唯一的(字符串, 数字, or 元组)'''
'''创建空集合'''
empty_set = set()
'''创建非空集合'''
plates = {'上海主板', '深圳主板', '创业板'}
'''将列表转化为集合'''
concepts = set(['创业板', '次新股', '国企'])
'''集合求交集'''
print(plates & concepts)
'''集合求并集'''
print(plates | concepts)
'''集合求差集'''
print(plates - concepts)
{'创业板'} {'上海主板', '深圳主板', '次新股', '国企', '创业板'} {'深圳主板', '上海主板'}
'''列表去重'''
a=['000001.SZA','600001.SHA','000001.SZA']
set(a)
4.6 字典
'''使用花括号 {} 定义的二元元组元素列表,
每个元素由键名-键值成对组成,每个键值对之间用逗号分隔,
键名必须是唯一的, 可以使用字符串、数字或者元组'''
'''创建一个空字典(两种方法)'''
empty_dict = {}
empty_dict = dict()
'''创建持仓字典'''
positions = {'300010.SZA':'100股', '002100.SZA':'200股', '600010.SHA':'300股'}
'''查看字典长度'''
len(positions)
'''根据键名获取键值'''
print(positions.get('002100.SZA',0))
print(positions['002100.SZA'])
print(positions.get('111111.SZA','0股'))
200股 200股 0股
'''修改字典键值'''
positions['002100.SZA'] = '5手'
print(positions)
'''根据键名删除字典的键对'''
del positions['002100.SZA']
positions.pop('300010.SZA')
print(positions)
'''为字典增加键对'''
positions['002102.SZA'] = '1000股'
print(positions)
{'300010.SZA': '100股', '002100.SZA': '5手', '600010.SHA': '300股'} {'600010.SHA': '300股'} {'600010.SHA': '300股', '002102.SZA': '1000股'}
'''字典的索引'''
print(positions.keys()) # 键名查询
print(positions.values()) # 键值查询
print(positions.items()) # 键对查询
dict_keys(['600010.SHA', '002102.SZA']) dict_values(['300股', '1000股']) dict_items([('600010.SHA', '300股'), ('002102.SZA', '1000股')])
5、函数
'''定义函数案例'''
def square(x):
return x**2
'''调用函数'''
result = square(3)
print(result)
9
'''使用pass作为占位符:'''
def stub():
pass
print(stub())
None
'''lambda 表达式函数等价于def函数定义'''
def squared(x):
return x**2
squared2 = lambda x: x**2
squared2(3)
6、循环
'''对字典键对循环,依次打印字典的键名和键值'''
positions = {'300010.SZA':'100股', '002100.SZA':'200股', '600010.SHA':'300股'}
for item in positions.items():
print(item, '股数',item[0], '股票:',item[1])
for key, value in positions.items():
print(key, value)
('300010.SZA', '100股') 股数 300010.SZA 股票: 100股 ('002100.SZA', '200股') 股数 002100.SZA 股票: 200股 ('600010.SHA', '300股') 股数 600010.SHA 股票: 300股 300010.SZA 100股 002100.SZA 200股 600010.SHA 300股
'''使用continue跳过某轮循环,继续执行后续循环'''
for key, value in positions.items():
if key[0]=='0':
continue
print(key, value)
300010.SZA 100股 600010.SHA 300股
'''使用break终止循环'''
for key, value in positions.items():
print(key, value)
if key[0]=='3':
break
300010.SZA 100股
'''while循环, 判断如果满足条件则一直循环'''
count = 0
while count < 3:
print(count)
count += 1 # 等价于 'count = count + 1'
0 1 2
7、生成式 语法: [expression for variable in iterable if condition]
列表生成式
'''生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]'''
[k for k in range(1, 11)]
'''生成list [1x1, 2x2, 3x3, ..., 10x10]'''
[x**2 for x in range(1, 11)]
'''添加if条件判断,只对偶数生成list [1x1, 2x2, 3x3, ..., 10x10]'''
[x**2 for x in range(1, 11) if x%2==0 ]
''' 添加if - else条件分支,只对偶数做平方运算 奇数保持不变 '''
[x**2 if x%2==0 else x for x in range(1, 11) ]
'''利用列表生成式获取持仓股票列表中3开头的创业板股票'''
stocks_hold = ['000010.SZA','300001.SZA','600012.SHA']
stocks_filter = [ stock for stock in stocks_hold if stock[0]=='3' ]
stocks_filter
'''利用列表生成式, 对持仓列表遍历循环'''
sell_list = [ '000010.SZA', '600010.SHA']
stock_to_sell = [ stock for stock in stocks_hold if stock in sell_list ]
stock_to_sell
字典生成式 构造一个持仓字典,键名为股票代码,键值为另一个字典,包含了股票的持仓数量amount和成本cost、买入日期last_sale_date
positions = {'300010.SZA':{'amount': 100, 'cost': 6.10, 'last_sale_date': '2019-01-03'},
'002100.SZA':{'amount': 200, 'cost': 3.12, 'last_sale_date': '2019-03-03'},
'600010.SHA':{'amount': 300, 'cost': 15.10,'last_sale_date': '2019-04-03'}}
my_positions = {instrument:position['amount'] for instrument, position in positions.items()}
print(my_positions)
{'300010.SZA': 100, '002100.SZA': 200, '600010.SHA': 300}
8、条件语句
x=30
y=42
'''判断是否等于'''
print(x==y)
'''判断是否不等于'''
print(x!=y)
'''判断是否大于'''
print(x>y)
'''判断是否小于等于'''
print(x<=y)
False True False True
'''使用if-else构建条件分支'''
if x>42:
print('x大于42')
else:
print('x小于等于42')
x小于等于42
'''使用if-elif-else构建条件分支'''
if x>42:
print('x大于42')
elif x==42:
print('x等于42')
else:
print('x小于42')
x小于42