# 变量
# 命名规则:大小写字母、数字、下划线,不能以数字开头,不能是关键字
# 查看python中的关键字
import keyword
print(keyword.kwlist)
# 定义即赋值
# 定义时不需要指定类型,可以自动推断
a = 1
# 查看类型 使用type函数
print(type(a))
# python是动态数据类型
a = 1.1
print(type(a))
a = "abc"
print(type(a))
# print 函数
# 打印到控制台
# 打印多个值
print(a,1,2,3,4,5,6,7)
# 不换行打印
print("hello ",end="") # ""里默认是n,换行
print("world")
# 注释
# 单行注释
''' 多行注释一般用于文档说明
多行注释
多行注释
'''
"""
多行注释
多行注释
"""
# 基本数据类型
# 5大: 整型 int;浮点型 float;字符串: str;布尔:bool;空类型: NoneType
int1 =10
print(int1,type(int1))
float1 =10.11
print(float1,type(float1))
# 字符串不严格区分单双引号 都是str
# 没有字符类型
str1 = 'abcdefg'
str2 = "abcdeghijk"
str3 = 'a'
print(str1,type(str1))
print(str2,type(str2))
print(str3,type(str3))
# 首字母大写
bool1 = True
bool2 = False
print(bool1,type(bool1))
print(bool2,type(bool2))
none = None
print(none,type(none))
# 类型的转换
# 要转换成什么类型就调用对应的 类型方法
# int() float() str() bool()
# 注意要转化的值,必须符合要求
str4 = '123'
print(str4, type(str4))
str2int = int(str4)
print(str2int,type(str2int))
# 字符串中常用的方法
str1 = 'java scala python hadoop hive hbase spark'
print(str1.split(' ')) # 按照指定的分隔符进行切分 返回一个list
# 切片
# [起始位置:结束位置:步长]
# [起始,结束)
# 起始位置默认是第一个字符 结束位置默认是最后一个字符 步长默认为1
print(str1[11:17]) # 相当于java中的substring
# 步长 表示隔几个元素去一次
print(str1[11:17:2]) # pto
print(str1[11:17:3]) # ph
print(str1[11:17:4]) # po
print(str1[11:17:-1])
# 倒转字符串
print(str1[::-1])
# 索引
# 注意:索引越界的问题
print(str1[6])
print(str1[-7]) # 负数索引 从右往左数第几个元素
print(str1[-11:-6])
# 查看字符串的长度
print(len(str1))
# t tab 制表符
# n 换行符 r 回车符
str2 = ' t n r java scala python hadoop hive hbase spark t t n '
print(str2)
print(str2.strip()) # 去除字符串左右两边的隐藏字符
str2 = '| t n r java scala python hadoop hive hbase spark t t n |'
print(str2)
print(str2.strip('|')) # 去竖线
# 格式化字符串
# 4 * 3 = 12
a = 4
b = 3
print(a,'*' ,b,'=',a*b)
# 定义一个模板
# {} * {} ={}
str_format ='{} * {} = {}' # 只会做简单的替换,不会做类型的检查
print(str_format.format(a,b,a*b))
# %d * %d = %d
# %d表示数字
# %s表示字符串 %f 表示小数
print('%d * %d = %d' % (a,b,a*b)) # 可以做类型的检查
# 控制输出三位小数
f1 = 1.23456
print('%.3f'% f1)
print('*'*50)
# 算术运算
i = 10
j = 3
print(i+j)
print(i-j)
print(i*j)
print(i/j)
print(i%j)
print(i**j) # i的j次方
print(i//j) # 对结果向下取整
print(2**3**2) # 2的9次方,从后往前算
print(10//3//2) # 从前往后算
# 逻辑运算
# 与或非
print(True & True)
print(True & False)
print(True and False)
print(True | False)
print(True or False)
print(True ^ False) # 异或
print(not True )