您现在的位置: 捷凌网安 >> 编程语言 >> Linux编程 >> Python编程 >> 正文
Python编程技巧-使用状态机

作者:佚名 责任编辑:左决 点击数: 更新时间:2008-2-21 6:55:08

文件:statemachine_test.py


    
        
     
          from
    
         statemachine 
        
     
          import
    
         StateMachine
        
     
          def
            
     
     
          ones_counter
    
        (val):
        
     
          print
    
        
    
        "ONES State: ",
        
     
          while
    
         1:
        
     
          if
    
         val <= 0 
        
     
          or
    
         val >= 30:
 newState = 
        "Out_of_Range" ; 
        
     
          break
  elif
    
         20 <= val < 30:
 newState = 
        "TWENTIES"; 
        
     
          break
  elif
    
         10 <= val < 20:
 newState = 
        "TENS"; 
        
     
          break
  else
    
        :
        
     
          print
    
        
    
        " @ %2.1f+" % val,
 val = math_func(val)
        
     
          print
    
        
    
        " >>"
    
        
     
            return
    
         (newState, val)
        
     
          def  
            
     
     
          tens_counter
    
        (val):
        
     
          print
    
        
    
        "TENS State: ",
        
     
          while
    
         1:
        
     
          if
    
         val <= 0 
        
     
          or
    
         val >= 30:
 newState = 
        "Out_of_Range"; 
        
     
          break
  elif
    
         1 <= val < 10:
 newState = 
        "ONES"; 
        
     
          break
  elif
    
         20 <= val < 30:
 newState = 
        "TWENTIES"; 
        
     
          break
  else
    
        :
        
     
          print
    
        
    
        " #%2.1f+" % val,
 val = math_func(val)
        
     
          print
    
        
    
        " >>"
    
        
     
            return
    
         (newState, val)
        
     
          def  
            
     
     
          twenties_counter
    
        (val):
        
     
          print
    
        
    
        "TWENTIES State:",
        
     
          while
    
         1:
        
     
          if
    
         val <= 0 
        
     
          or
    
         val >= 30:
 newState = 
        "Out_of_Range"; 
        
     
          break
  elif
    
         1 <= val < 10:
 newState = 
        "ONES"; 
        
     
          break
  elif
    
         10 <= val < 20:
 newState = 
        "TENS"; 
        
     
          break
  else
    
        :
        
     
          print
    
        
    
        " *%2.1f+" % val,
 val = math_func(val)
        
     
          print
    
        
    
        " >>"
    
        
     
            return
    
         (newState, val)
        
     
          def  
            
     
     
          math_func
    
        (n):
        
     
          from
    
         math 
        
     
          import
    
         sin
        
     
          return
    
         abs(sin(n))*31
        
     
          if
    
         __name__== 
        "__main__":
 m = StateMachine()
 m.add_state(
        "ONES", ones_counter)
 m.add_state(
        "TENS", tens_counter)
 m.add_state(
        "TWENTIES", twenties_counter)
 m.add_state(
        "OUT_OF_RANGE", None, end_state=1)
 m.set_start(
        "ONES")
 m.run(1)
            

上一页  [1] [2] [3] [4] 

  • 上一篇文章:

  • 下一篇文章:
  •  
    最进更新
    普通文章VC++设计超强仿QQ自动伸缩窗04-17
    推荐文章基于HOOK和MMF的Win密码渗透04-17
    推荐文章几种VC++数据库开发技术的相04-17
    普通文章多线程、Socket技术及委托技04-11
    推荐文章VB.Net连接各种数据库的几种04-11
    普通文章VB.NET中的多窗体编程:升级04-11
    普通文章用VB.NET定制Windows控件04-11
    普通文章VB.NET中监视文件夹的变化04-11
    普通文章VB.NET中对象的克隆04-11
    推荐文章VB.NET中的TextBox控件详解04-11
     
    推荐文章
    推荐文章基于HOOK和MMF的Win密码渗透04-17
    推荐文章几种VC++数据库开发技术的相04-17
    推荐文章VB.Net连接各种数据库的几种04-11
    推荐文章VB.NET中的TextBox控件详解04-11
    推荐文章在VB.NET中进行抓屏04-11
    推荐文章VB.Net开发的长内容自动分页04-11
    推荐文章VB.NET中快速访问注册表技巧04-11
    推荐文章PHP5手动最简安装方法03-07
    推荐文章完全讲解PHP+MySQL的分页显示03-07
    推荐文章Linux Shell元字符知识笔记02-21
     
    热点文章 
    普通文章VC++设计超强仿QQ自动伸缩窗04-17
    推荐文章基于HOOK和MMF的Win密码渗透04-17
    推荐文章几种VC++数据库开发技术的相04-17
    普通文章VB.NET中的多窗体编程:升级04-11
    普通文章用VB.NET定制Windows控件04-11
    普通文章VB.NET中对象的克隆04-11
    推荐文章VB.NET中的TextBox控件详解04-11
    普通文章VB/VB.NET/C#导出到Excel的方04-11
    普通文章如何通过VB.NET获取网卡地址04-11
    普通文章VB.NET中使用ListView控件的04-11

    | 设为首页 | 加入收藏 | 联系站长 | 广告服务 | 友情链接 | 版权申明 | 网站地图 |

    在线交流 捷凌网安主群:51649627
    Copyright 2007-2008 © 捷凌网安. All rights reserved.
    备案序号:蜀ICP备08001812号