1. 程式人生 > 其它 >PLC中的程式結構詳解

PLC中的程式結構詳解

一.教程

#常規異常處理
def spam(divideBy):
  try:
    return 42 / divideBy
  except ZeroDivisionError:
    print('Error: Invalid argument.')

try:
  print(5/0)
except ZeroDivisionError:
  print("you can't divide by zero!")
else:
  print("ok")

try: #檔案不存在
  with open(filename) as lin_file:
    a = lin_file.read()
except FileNotFoundError:
  print("file not found")

raise Exception('This is the error message.') #返回錯誤

#儲存反向追蹤
import traceback
try:
  #raise Exception('This is the error message.')
  print(abc) #一個不存在變數
except:
  errorFile = open('errorInfo.txt', 'w')
  errorFile.write(traceback.format_exc())
  errorFile.close()
  print('The traceback info was written to errorInf')

#異常
except Exception as other: #將異常賦值給變數


class UppercaseException(Exception):
  pass

words = ['eeenie', 'meenie', 'miny', 'Mo']
for word in words:
  if word.isupper():
    raise UppercaseException(word)


for place in sys.path:
  print(place)

二.斷言

market_2nd = {'ns': 'green', 'ew': 'red', 'xx': 'yellow'}
mission_16th = {'ns': 'red', 'ew': 'green'}

def switchLights(stoplight):
  for key in stoplight.keys():
    if stoplight[key] == 'green':
      stoplight[key] = 'yellow'
    elif stoplight[key] == 'yellow':
      stoplight[key] = 'red'
    elif stoplight[key] == 'red':
      stoplight[key] = 'green'
  assert 'red' in stoplight.values(), 'Neither light is red! ' + str(stoplight)

switchLights(market_2nd)
switchLights(mission_16th) #ns會變為綠的,ew方向為成為黃色,導致沒有紅色的,車會一直開,會擁堵

#執行時-O則禁用斷言,不過通常是註釋斷言

三.例項

def boxPrint(symbol, width, height):
  if len(symbol) != 1:
    raise Exception('Symbol must be a single character string.')
  if width <= 2:
    raise Exception('Width must be greater than 2.')
  if height <= 2:
   raise Exception('Height must be greater than 2.')

  print(symbol * width) #列印
  for i in range(height - 2):
    print(symbol + (' ' * (width - 2)) + symbol)
  print(symbol * width)

for sym, w, h in (('*', 4, 4), ('O', 20, 5), ('x', 1, 3), ('ZZ', 3, 3)):
  try:
    boxPrint(sym, w, h)
  except Exception as err: #返回自定義錯誤
    print('An exception happened: ' + str(err))
本文版權歸作者所有,歡迎轉載,請務必新增原文連結。