593 lines
23 KiB
Python
593 lines
23 KiB
Python
from docxtpl import DocxTemplate, InlineImage
|
|
from docx.shared import Mm, Inches, Pt
|
|
from openpyxl import Workbook, load_workbook
|
|
from openpyxl.drawing.image import Image
|
|
from .models import User,Trouble,Dickey,Partment,Dicclass,Train,Drill,TroubleAccess,Group,Yjyc,Equipment,Area,RiskAct,Risk,Question,Questioncat
|
|
from datetime import datetime,date
|
|
import base64
|
|
from django.conf import settings
|
|
import qrcode
|
|
import os
|
|
from django.contrib.auth.hashers import make_password
|
|
from django.db.models import Q
|
|
|
|
def makeqr(data):
|
|
upload_folder = 'media/qr_equipment'
|
|
if not os.path.exists(upload_folder):
|
|
os.mkdir(upload_folder)
|
|
img = qrcode.make(data=data)
|
|
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
|
img.save(filepath)
|
|
return filepath
|
|
def makeqr_train(data):
|
|
upload_folder = 'media/qr_train'
|
|
if not os.path.exists(upload_folder):
|
|
os.mkdir(upload_folder)
|
|
img = qrcode.make(data=data)
|
|
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
|
img.save(filepath)
|
|
return filepath
|
|
|
|
def makeqr_riskact(data):
|
|
upload_folder = 'media/qr_riskact'
|
|
if not os.path.exists(upload_folder):
|
|
os.mkdir(upload_folder)
|
|
img = qrcode.make(data=data)
|
|
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
|
img.save(filepath)
|
|
return filepath
|
|
|
|
def makeqr_examtest(data):
|
|
upload_folder = 'media/qr_examtest'
|
|
if not os.path.exists(upload_folder):
|
|
os.mkdir(upload_folder)
|
|
img = qrcode.make(data=data)
|
|
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
|
img.save(filepath)
|
|
return filepath
|
|
|
|
def makeqr_area(data):
|
|
upload_folder = 'media/qr_area'
|
|
if not os.path.exists(upload_folder):
|
|
os.mkdir(upload_folder)
|
|
img = qrcode.make(data=data)
|
|
filepath = os.path.join(upload_folder, data.split('=')[1]+'.png').replace('\\','/')
|
|
img.save(filepath)
|
|
return filepath
|
|
|
|
def drquestions(companyid,path,userid):
|
|
wb = load_workbook(path)
|
|
sheet = wb.worksheets[0]
|
|
i = 4
|
|
user = User.objects.get(userid=userid)
|
|
qlist = ['A','B','C','D','E','F']
|
|
leveldict = {'低':1,'中':2,'高':3}
|
|
notinlist = []
|
|
while sheet['c'+str(i)].value!=None:
|
|
type = sheet['a'+str(i)].value.replace(' ', '')
|
|
cate = sheet['b'+str(i)].value.replace(' ', '')
|
|
title = sheet['c'+str(i)].value
|
|
answer = {}
|
|
if sheet['d'+str(i)].value:
|
|
answer['A'] = sheet['d'+str(i)].value
|
|
if sheet['e'+str(i)].value:
|
|
answer['B'] = sheet['e'+str(i)].value
|
|
if sheet['f'+str(i)].value:
|
|
answer['C'] = sheet['f'+str(i)].value
|
|
if sheet['g'+str(i)].value:
|
|
answer['D'] = sheet['g'+str(i)].value
|
|
if sheet['h'+str(i)].value:
|
|
answer['E'] = sheet['h'+str(i)].value
|
|
if sheet['i'+str(i)].value:
|
|
answer['F'] = sheet['i'+str(i)].value
|
|
right = sheet['j'+str(i)].value.replace(' ', '')
|
|
resolution = sheet['k'+str(i)].value
|
|
level = sheet['l'+str(i)].value
|
|
objs = Questioncat.objects.filter(usecomp__partid=1,name=cate)
|
|
if objs.exists():
|
|
cateobj = objs[0]
|
|
else:
|
|
objs = Questioncat.objects.filter(usecomp__partid=companyid,name=cate)
|
|
if objs.exists():
|
|
cateobj = objs[0]
|
|
else:
|
|
cateobj = Questioncat.objects.create(usecomp=Partment.objects.get(partid=companyid),name=cate)
|
|
print(cateobj)
|
|
if type == '单选':
|
|
if Question.objects.filter(type=1,title=title,right=right,deletemark=1).exists():
|
|
notinlist.append(i)
|
|
else:
|
|
if right in ['A','B','C','D','E','F']:
|
|
obj = Question()
|
|
obj.type = 1
|
|
obj.questioncat = cateobj
|
|
obj.title = title
|
|
obj.answer=answer
|
|
obj.right = right
|
|
obj.resolution = resolution if resolution else ''
|
|
if level in leveldict:
|
|
obj.level = leveldict[level]
|
|
else:
|
|
obj.level = 1
|
|
obj.usecoms = ','+companyid+','
|
|
obj.createuser = user
|
|
obj.save()
|
|
elif type == '多选':
|
|
right = list(right)
|
|
if Question.objects.filter(type=2,title=title,right=right,deletemark=1).exists():
|
|
notinlist.append(i)
|
|
else:
|
|
if [False for c in right if c not in qlist]:
|
|
pass
|
|
else:
|
|
obj = Question()
|
|
obj.type = 2
|
|
obj.questioncat = cateobj
|
|
obj.title = title
|
|
obj.answer=answer
|
|
obj.right = right
|
|
obj.resolution = resolution if resolution else ''
|
|
if level in leveldict:
|
|
obj.level = leveldict[level]
|
|
else:
|
|
obj.level = 1
|
|
obj.usecoms = ','+companyid+','
|
|
obj.createuser = user
|
|
obj.save()
|
|
elif type == '判断':
|
|
if right == 'A' or right == '对':
|
|
right = 'A'
|
|
else:
|
|
right = 'B'
|
|
if Question.objects.filter(type=3,title=title,right=right,deletemark=1).exists():
|
|
notinlist.append(i)
|
|
else:
|
|
obj = Question()
|
|
obj.type = 3
|
|
obj.questioncat = cateobj
|
|
obj.title = title
|
|
obj.answer={'A':'对','B':'错'}
|
|
obj.right = right
|
|
obj.resolution = resolution if resolution else ''
|
|
if level in leveldict:
|
|
obj.level = leveldict[level]
|
|
else:
|
|
obj.level = 1
|
|
obj.usecoms = ','+companyid+','
|
|
obj.createuser = user
|
|
obj.save()
|
|
i = i +1
|
|
print(notinlist)
|
|
return notinlist
|
|
|
|
|
|
|
|
|
|
def drequipments(companyid,path):
|
|
wb = load_workbook(path)
|
|
sheet = wb.worksheets[0]
|
|
# 验证文件内容
|
|
if sheet['a3'].value != '区域':
|
|
return {'code':0,'msg':'区域列错误!'}
|
|
if sheet['b3'].value != '设备类别':
|
|
return {'code':0,'msg':'设备类别列错误!'}
|
|
if sheet['c3'].value != '编号':
|
|
return {'code':0,'msg':'编号列错误!'}
|
|
if sheet['d3'].value != '设备名称':
|
|
return {'code':0,'msg':'设备名称列错误!'}
|
|
if sheet['e3'].value != '规格型号':
|
|
return {'code':0,'msg':'规格型号列错误!'}
|
|
if sheet['f3'].value != '生产厂家':
|
|
return {'code':0,'msg':'生产厂家列错误!'}
|
|
if sheet['g3'].value != '出厂编号':
|
|
return {'code':0,'msg':'出厂编号列错误!'}
|
|
if sheet['h3'].value != '出厂日期':
|
|
return {'code':0,'msg':'出厂日期列错误!'}
|
|
if sheet['i3'].value != '投用日期':
|
|
return {'code':0,'msg':'投用日期列错误!'}
|
|
if sheet['j3'].value != '安装位置':
|
|
return {'code':0,'msg':'安装位置列错误!'}
|
|
if sheet['k3'].value != '主要技术参数':
|
|
return {'code':0,'msg':'主要技术参数列错误!'}
|
|
if sheet['l3'].value != '是否特种设备':
|
|
return {'code':0,'msg':'是否特种设备列错误!'}
|
|
if sheet['m3'].value != '是否主设备':
|
|
return {'code':0,'msg':'是否主设备列错误!'}
|
|
if sheet['n3'].value != '责任部门':
|
|
return {'code':0,'msg':'责任部门列错误!'}
|
|
if sheet['o3'].value != '责任人':
|
|
return {'code':0,'msg':'责任人列错误!'}
|
|
catedict = {}
|
|
for i in Dickey.objects.filter(Q(dicparent__dicid=47),Q(usecomps__contains=','+str(companyid)+',')|Q(usecomps__contains=',1,')).exclude(usecomps__contains=','+str(companyid)+','):
|
|
catedict[i.dicname] = i.dicid
|
|
if '其他设备类' not in catedict:
|
|
catedict['其它设备类'] = 361
|
|
numdict = {}
|
|
numsdict = {}
|
|
nums = Equipment.objects.filter(usecomp__partid=companyid)
|
|
for i in nums:
|
|
numdict[i.num]=i
|
|
i=4
|
|
while sheet['c'+str(i)].value!=None:
|
|
area = sheet['a'+str(i)].value
|
|
cate = sheet['b'+str(i)].value
|
|
name = sheet['d'+str(i)].value
|
|
type = sheet['e'+str(i)].value
|
|
oem = sheet['f'+str(i)].value
|
|
fnum = sheet['g'+str(i)].value
|
|
fdate = sheet['h'+str(i)].value
|
|
udate = sheet['i'+str(i)].value
|
|
place = sheet['j'+str(i)].value
|
|
parameter = sheet['k'+str(i)].value
|
|
partment = sheet['n'+str(i)].value
|
|
user = sheet['o'+str(i)].value
|
|
note = sheet['p'+str(i)].value
|
|
num = sheet['c'+str(i)].value
|
|
iskey = sheet['m'+str(i)].value
|
|
istz = sheet['l'+str(i)].value
|
|
if num:
|
|
if num not in numdict:
|
|
a = Equipment()
|
|
a.num = num
|
|
a.name = name
|
|
a.type = type
|
|
a.oem = oem
|
|
a.fnum = fnum
|
|
a.place = place
|
|
a.note = note
|
|
a.parameter = parameter
|
|
if iskey:
|
|
iskey = iskey.replace(' ', '')
|
|
if iskey=='是':
|
|
a.iskey=1
|
|
if istz:
|
|
istz = istz.replace(' ', '')
|
|
if istz=='是':
|
|
a.istz=1
|
|
if fdate:
|
|
if isinstance(fdate,datetime):
|
|
a.fdate = fdate
|
|
else:
|
|
fdate = fdate.replace(' ','')
|
|
if '-' in fdate:
|
|
a.fdate = datetime.strptime(fdate,'%Y-%m-%d').date()
|
|
elif '.' in fdate:
|
|
a.fdate = datetime.strptime(fdate,'%Y.%m.%d').date()
|
|
elif '/' in fdate:
|
|
a.fdate = datetime.strptime(fdate,'%Y/%m/%d').date()
|
|
if udate:
|
|
if isinstance(udate,datetime):
|
|
a.udate = udate
|
|
else:
|
|
udate = udate.replace(' ','')
|
|
if '-' in udate:
|
|
a.udate = datetime.strptime(udate,'%Y-%m-%d').date()
|
|
elif '.' in udate:
|
|
a.udate = datetime.strptime(udate,'%Y.%m.%d').date()
|
|
elif '/' in udate:
|
|
a.udate = datetime.strptime(udate,'%Y/%m/%d').date()
|
|
if area:
|
|
area = area.replace(' ', '')
|
|
objs = Area.objects.filter(usecomp__partid=companyid,name=area)
|
|
if objs.exists():
|
|
a.area = objs[0]
|
|
if partment and user:
|
|
partment = partment.replace(' ', '')
|
|
user = user.replace(' ', '')
|
|
parts = Partment.objects.filter(partname=partment,partlink__contains=','+companyid+',')
|
|
if parts.exists():
|
|
a.zrbm = parts[0]
|
|
users = User.objects.filter(name=user,usecomp__partid=companyid)
|
|
if users.exists():
|
|
a.zrr = users[0]
|
|
if cate:
|
|
cate = cate.replace(' ', '')
|
|
if cate in catedict:
|
|
a.cate=Dickey.objects.get(dickeyid=catedict[cate])
|
|
a.usecomp=Partment.objects.get(partid=companyid)
|
|
a.save()
|
|
a.qrcode = makeqr('https://safeyun.ctcshe.com/miniprogram/equipment?id='+str(a.id))
|
|
a.save()
|
|
numdict[num]=a
|
|
else:
|
|
numsdict[num]=name
|
|
i = i+1
|
|
if numsdict:
|
|
return {'code':1,'msg':'全部导入成功!'}
|
|
else:
|
|
return {'code':2,'msg':'部分未导入成功!','info':numsdict}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def drusers(companyid,path):
|
|
wb = load_workbook(path)
|
|
sheet = wb.worksheets[0]
|
|
# 验证文件内容
|
|
if sheet['b3'].value != '姓名':
|
|
return {'code':0,'msg':'姓名列错误!'}
|
|
if sheet['c3'].value != '账户(手机号)':
|
|
return {'code':0,'msg':'账户列错误!'}
|
|
if sheet['d3'].value != '部门':
|
|
return {'code':0,'msg':'部门列错误!'}
|
|
partdict = {}
|
|
# groupdict = {}
|
|
userdict = {}
|
|
parts = Partment.objects.filter(partlink__contains=',' + companyid + ',')|Partment.objects.filter(partid=companyid) #获取所有部门
|
|
for i in parts:
|
|
partdict[i.partname] = i.partid
|
|
# groups = Group.objects.filter(usecomp__partid=companyid)
|
|
# for i in groups:
|
|
# groupdict[i.groupname] = i.groupid
|
|
i = 4
|
|
while sheet['C'+str(i)].value !=None:
|
|
empid = sheet['A'+str(i)].value
|
|
if empid!=None and isinstance(empid,str):
|
|
empid = empid.replace(' ', '')
|
|
name = sheet['B'+str(i)].value
|
|
if name !=None:
|
|
name = name.replace(' ', '')
|
|
username = sheet['C'+str(i)].value
|
|
if isinstance(username,str):
|
|
username = username.replace(' ', '')
|
|
partname = sheet['D'+str(i)].value #部门
|
|
if partname != None:
|
|
partname = partname.replace(' ', '')
|
|
if partname not in partdict:
|
|
a = Partment()
|
|
a.parentid = Partment.objects.get(partid=companyid)
|
|
a.partname = partname
|
|
a.partlink = Partment.objects.get(partid=companyid).partlink + str(companyid) + ','
|
|
a.save()
|
|
partdict[partname] = a.partid
|
|
# groupname = sheet['E'+str(i)].value
|
|
# groupname = groupname.replace(' ', '') if groupname else None
|
|
# if groupname and groupname not in groupdict:
|
|
# obj = Group()
|
|
# obj.groupname = groupname
|
|
# obj.usecomp = Partment.objects.get(partid=companyid)
|
|
# obj.save()
|
|
# groupdict[groupname] = obj.groupid
|
|
if User.objects.filter(username = username).count() == 0:
|
|
a = User()
|
|
a.name = name
|
|
a.empid = empid
|
|
a.username = username
|
|
a.password = '0000'
|
|
a.epassword = make_password('0000')
|
|
a.ubelongpart = Partment.objects.get(partid=partdict[partname])
|
|
a.usecomp = Partment.objects.get(partid=companyid)
|
|
a.save()
|
|
Group.objects.get(usecomp__partid=companyid,grouptype=3).users.add(a) #赋权
|
|
# if groupname:
|
|
# Group.objects.get(groupid=groupdict[groupname]).users.add(a)
|
|
else:
|
|
userdict[username]=i
|
|
i = i + 1
|
|
if userdict:
|
|
return {'code':2,'msg':'导入部分成功!','info':userdict}
|
|
else:
|
|
return {'code':1,'msg':'导入全部成功!'}
|
|
|
|
def drrisks(companyid,path):
|
|
wb = load_workbook(path)
|
|
sheet = wb.worksheets[0]
|
|
errorlist = []
|
|
i=5
|
|
while sheet['d'+str(i)].value!=None:
|
|
area = sheet['a'+str(i)].value.replace(' ', '')
|
|
place = sheet['b'+str(i)].value
|
|
type = sheet['c'+str(i)].value.replace(' ', '')
|
|
name = sheet['d'+str(i)].value
|
|
group = sheet['e'+str(i)].value
|
|
step = sheet['f'+str(i)].value
|
|
hazard = sheet['g'+str(i)].value
|
|
result = sheet['h'+str(i)].value
|
|
measure1 = sheet['i'+str(i)].value
|
|
measure2 = sheet['j'+str(i)].value
|
|
measure3 = sheet['k'+str(i)].value
|
|
measure4 = sheet['l'+str(i)].value
|
|
measure5 = sheet['m'+str(i)].value
|
|
gkcj = sheet['n'+str(i)].value
|
|
zrbm = sheet['o'+str(i)].value
|
|
zrr = sheet['p'+str(i)].value
|
|
riskl = sheet['q'+str(i)].value
|
|
riske = sheet['r'+str(i)].value
|
|
riskc = sheet['s'+str(i)].value
|
|
step = step if step else None
|
|
hazard = hazard if hazard else None
|
|
result = result if result else None
|
|
measure1 = measure1 if measure1 else None
|
|
measure2 = measure2 if measure2 else None
|
|
measure3 = measure3 if measure2 else None
|
|
measure4 = measure4 if measure2 else None
|
|
measure5 = measure5 if measure2 else None
|
|
gkcj = gkcj if gkcj else None
|
|
riskl = float(riskl)
|
|
riske = float(riske)
|
|
riskc = float(riskc)
|
|
riskd = riskl*riske*riskc
|
|
level = ''
|
|
if area and type and name:
|
|
a = Risk()
|
|
areas = Area.objects.filter(name=area,usecomp__partid=companyid)
|
|
group = group.replace(' ','')
|
|
groups = Group.objects.filter(groupname=group,usecomp__partid=companyid)
|
|
if area and areas.exists():
|
|
riskacts = RiskAct.objects.filter(area=areas[0],name=name,usecomp__partid=companyid)
|
|
if riskacts.exists():
|
|
riskact = riskacts[0]
|
|
risks = Risk.objects.filter(riskact=riskact,step=step)
|
|
if risks.exists():
|
|
a = risks[0]
|
|
else:
|
|
a = Risk()
|
|
a.riskact = riskact
|
|
else:
|
|
obj = RiskAct()
|
|
obj.area = areas[0]
|
|
obj.place = place
|
|
if type == '设备设施类':
|
|
obj.type = Dickey.objects.get(dickeyid=396)
|
|
elif type == '作业活动类':
|
|
obj.type = Dickey.objects.get(dickeyid=397)
|
|
obj.name=name
|
|
obj.usecomp=Partment.objects.get(partid=companyid)
|
|
obj.gkcj=gkcj
|
|
if groups.exists():
|
|
obj.group = groups[0]
|
|
else:
|
|
g = Group()
|
|
g.groupname = group
|
|
g.usecomp = Partment.objects.get(partid=companyid)
|
|
g.save()
|
|
obj.group = g
|
|
if zrbm and zrr:
|
|
zrbm = zrbm.replace(' ', '')
|
|
zrr = zrr.replace(' ', '')
|
|
parts = Partment.objects.filter(partname=zrbm,partlink__contains=','+companyid+',')
|
|
if parts.exists():
|
|
obj.zrbm = parts[0]
|
|
users = User.objects.filter(name=zrr,usecomp__partid=companyid)
|
|
if users.exists():
|
|
obj.zrr = users[0]
|
|
obj.save()
|
|
obj.qrcode = makeqr_riskact('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
|
obj.save()
|
|
a = Risk()
|
|
a.riskact=obj
|
|
# else:
|
|
# riskacts = RiskAct.objects.filter(name=name,usecomp__partid=companyid)
|
|
# if riskacts.exists():
|
|
# riskact = riskacts[0]
|
|
# risks = Risk.objects.filter(riskact=riskact,step=step)
|
|
# if risks.exists():
|
|
# a = risks[0]
|
|
# else:
|
|
# a = Risk()
|
|
# a.riskact = riskact
|
|
# else:
|
|
# obj = RiskAct()
|
|
# obj.place = place
|
|
# if type == '设备设施类':
|
|
# obj.type = Dickey.objects.get(dickeyid=396)
|
|
# elif type == '作业活动类':
|
|
# obj.type = Dickey.objects.get(dickeyid=397)
|
|
# obj.name=name
|
|
# obj.usecomp=Partment.objects.get(partid=companyid)
|
|
# obj.gkcj=gkcj
|
|
# if groups.exists():
|
|
# obj.group = groups[0]
|
|
# else:
|
|
# g = Group()
|
|
# g.groupname = group
|
|
# g.usecomp = Partment.objects.get(partid=companyid)
|
|
# g.save()
|
|
# obj.group = g
|
|
# if zrbm and zrr:
|
|
# zrbm = zrbm.replace(' ', '')
|
|
# zrr = zrr.replace(' ', '')
|
|
# parts = Partment.objects.filter(partname=zrbm,partlink__contains=','+companyid+',')
|
|
# if parts.exists():
|
|
# obj.zrbm = parts[0]
|
|
# users = User.objects.filter(name=zrr,usecomp__partid=companyid)
|
|
# if users.exists():
|
|
# obj.zrr = users[0]
|
|
# obj.save()
|
|
# obj.qrcode = makeqr3('https://safeyun.ctcshe.com/miniprogram/riskact?id='+str(obj.id))
|
|
# obj.save()
|
|
# a = Risk()
|
|
# a.riskact=obj
|
|
if riskd>=320:
|
|
a.level='重大风险'
|
|
elif 320>riskd>=160:
|
|
a.level='较大风险'
|
|
elif 160>riskd>=70:
|
|
a.level='一般风险'
|
|
else:
|
|
a.level='低风险'
|
|
a.step = step
|
|
a.hazard = hazard
|
|
a.result = result
|
|
a.measure1 = measure1
|
|
a.measure2 = measure2
|
|
a.measure3 = measure3
|
|
a.measure4 = measure4
|
|
a.measure5 = measure5
|
|
a.riskl = riskl
|
|
a.riske = riske
|
|
a.riskc = riskc
|
|
a.riskd = riskd
|
|
a.usecomp=Partment.objects.get(partid=companyid)
|
|
a.save()
|
|
cal_riskact_level(a.riskact)
|
|
else:
|
|
errorlist.append(i)
|
|
i = i+1
|
|
return errorlist
|
|
|
|
def cal_riskact_level(riskact):
|
|
levellist = []
|
|
for i in Risk.objects.filter(riskact=riskact):
|
|
levellist.append(i.level)
|
|
if '重大风险' in levellist:
|
|
riskact.level = '重大风险'
|
|
riskact.save()
|
|
elif '较大风险' in levellist:
|
|
riskact.level = '较大风险'
|
|
riskact.save()
|
|
elif '一般风险' in levellist:
|
|
riskact.level = '一般风险'
|
|
riskact.save()
|
|
else:
|
|
riskact.level = '低风险'
|
|
riskact.save()
|
|
cal_area_risk_level(riskact.area)
|
|
|
|
def cal_area_risk_level(area):
|
|
levellist = []
|
|
objs = RiskAct.objects.filter(area=area,type__dickeyid=396)
|
|
if objs.exists:
|
|
for i in objs:#区域等级只按设备设施类来划分
|
|
levellist.append(i.level)
|
|
if '重大风险' in levellist:
|
|
area.risklevel = '重大风险'
|
|
area.save()
|
|
elif '较大风险' in levellist:
|
|
area.risklevel = '较大风险'
|
|
area.save()
|
|
elif '一般风险' in levellist:
|
|
area.risklevel = '一般风险'
|
|
area.save()
|
|
else:
|
|
area.risklevel = '低风险'
|
|
area.save()
|
|
else:
|
|
area.risklevel = None
|
|
area.save()
|
|
|
|
def is_float(str):
|
|
if str.count('.') == 1: #小数有且仅有一个小数点
|
|
left = str.split('.')[0] #小数点左边(整数位,可为正或负)
|
|
right = str.split('.')[1] #小数点右边(小数位,一定为正)
|
|
lright = '' #取整数位的绝对值(排除掉负号)
|
|
if str.count('-') == 1 and str[0] == '-': #如果整数位为负,则第一个元素一定是负号
|
|
lright = left.split('-')[1]
|
|
elif str.count('-') == 0:
|
|
lright = left
|
|
else:
|
|
#print('%s 不是小数'%str)
|
|
return False
|
|
if right.isdigit() and lright.isdigit(): #判断整数位的绝对值和小数位是否全部为数字
|
|
#print('%s 是小数'%str)
|
|
return True
|
|
else:
|
|
#print('%s 不是小数'%str)
|
|
return False
|
|
else:
|
|
#print('%s 不是小数'%str)
|
|
return False |