# 把解决一类问题的模块放在同一个文件夹里 —— 包
# import os
# os.makedirs('glance/api')
# os.makedirs('glance/cmd')
# os.makedirs('glance/db')
# l = []
# l.append(open('glance/__init__.py','w'))
# l.append(open('glance/api/__init__.py','w'))
# l.append(open('glance/api/policy.py','w'))
# l.append(open('glance/api/versions.py','w'))
# l.append(open('glance/cmd/__init__.py','w'))
# l.append(open('glance/cmd/manage.py','w'))
# l.append(open('glance/db/models.py','w'))
# map(lambda f:f.close() ,l)
# import glance.api.policy as policy
# policy.get()
#
# from dir.glance.api import policy
# policy.get()
# import sys
# sys.path.insert(0,'C:\\Users\\Administrator\\PycharmProjects\\s9\\day21\\dir')
# # print(sys.path)
# from glance.api import policy
# policy.get()
# from dir import glance
# glance.db.models.register_models('mysql')
# glance.api.policy.get()
# 使用绝对路径 不管在包内部还是外部 导入了就能用
# 不能挪动,但是直观
# from dir import glance
# glance.api.policy.get()
# 相对路径
# 可以随意移动包 只要能找到包的位置,就可以使用包里的模块
# 包里的模块如果想使用其它模块的内容只能使用相对路径,使用了相对路径就不能在包内直接执行了
# 1/0
# name
# 2+'3'
# [][3]
#{}['k']
# try:
# print('1111')
# # 1/0
# print('2222')
# # name
# # 2+'3'
# # [][3]
# # {}['k']
# ret = int(input('number >>>'))
# print(ret*'*')
# except ValueError:
# print('输入的数据类型有误')
# except Exception:
# print('你错了,老铁')
# else:
# print('没有异常的时候执行else中的代码')
# print('===========')
# def func():
# try:
# f = open('file','w')
# ''''''
# return True
# except:
# return False
# finally:
# print('执行finally了')
# f.close()
#
# print(func())
# 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容
# 使用try和except就能处理异常
#try是我们需要处理的代码
#except 后面跟一个错误类型 当代码发生错误且错误类型符合的时候 就会执行except中的代码
#except支持多分支
#有没有一个能处理所有错误的类型 : Exception
# 有了万能的处理机制仍然需要把能预测到的问题单独处理
# 单独处理的所有内容都应该写在万能异常之前
# else : 没有异常的时候执行else中的代码
# finally : 不管代码是否异常,都会执行
# finally和return相遇的时候 依然会执行
# 函数里做异常处理用,不管是否异常去做一些收尾工作
# try:
# main()
# except Exception:
# pass
try:
print('1111')
# 1/0
print('2222')
# name
# 2+'3'
# [][3]
# {}['k']
ret = int(input('number >>>'))
print(ret*'*')
except Exception as error:
print('你错了,老铁',error)
# 计算器
# 首先得到一个字符串
# 去空格
# 没有空格的字符串
# 先算最里层括号里的 : 找括号 ,且括号里没有其他括号
# 得到了一个没有括号的表达式 :只有加减乘除
# 从左到右先找到第一个乘除法 : # 循环
# 乘除法第一个数的符号是不必匹配的
# 找到乘除法如何计算呢:
# 先判断是乘法还是除法
# 如果是乘法就以‘*’分割得到的内容是字符串数据类型的数
# 如果是除法就用'/'分割的内容是字符串数据类型的数
# 转数据类型之后根据 '*','/'计算结果
# 结果替换原来字符串中的内容
# 所有的乘除法都做完了
# 计算加减 —— 加减法
# ++ -- -+ +-都要提前处理
# 计算过程中所有的数都当成浮点数计算
# 第一位可以为负数
# 只有一个数了 就可以结束了