图片 1

字符串和整数的转换方法,python使用turtle库绘制树

本文实例为大家分享了python使用turtle库绘制树的具体代码,供大家参考,具体内容如下

数字转成字符串

对于管理系统,常常需要展示列表数据,我们对于列表内的数据常常需要查找、过滤、排序等操作,其中查找等操作大部分是在后台进行的。django
rest
framework可以轻松的实现数据的查找、过滤等操作。接下来我们将以实际的例子进行介绍。

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""

import turtle, datetime 
def drawGap(): #绘制数码管间隔 
  turtle.penup() 
  turtle.fd(5) 
def drawLine(draw):  #绘制单段数码管 
  drawGap() 
  turtle.pendown() if draw else turtle.penup() 
  turtle.fd(40) 
  drawGap() 
  turtle.right(90) 
def drawDigit(d): #根据数字绘制七段数码管 
  drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False) 
  drawLine(True) if d in [0,1,3,4,5,6,7,8,9] else drawLine(False) 
  drawLine(True) if d in [0,2,3,5,6,8,9] else drawLine(False) 
  drawLine(True) if d in [0,2,6,8] else drawLine(False) 
  turtle.left(90) 
  drawLine(True) if d in [0,4,5,6,8,9] else drawLine(False) 
  drawLine(True) if d in [0,2,3,5,6,7,8,9] else drawLine(False) 
  drawLine(True) if d in [0,1,2,3,4,7,8,9] else drawLine(False) 
  turtle.left(180) 
  turtle.penup() 
  turtle.fd(20) 
def drawDate(date): 
  turtle.pencolor("red") 
  for i in date: 
    if i == '-': 
      turtle.write('年',font=("Arial", 18, "normal")) 
      turtle.pencolor("green") 
      turtle.fd(40) 
    elif i == '=': 
      turtle.write('月',font=("Arial", 18, "normal")) 
      turtle.pencolor("blue") 
      turtle.fd(40) 
    elif i == '+': 
      turtle.write('日',font=("Arial", 18, "normal")) 
    else: 
      drawDigit(eval(i)) 
def main(): 
  turtle.setup(800, 350, 200, 200) 
  turtle.penup() 
  turtle.fd(-350) 
  turtle.pensize(5) 
  drawDate(datetime.datetime.now().strftime('%Y-%m=%d+')) 
  turtle.hideturtle() 
main()

方法一:

示例代码github地址:

使用格式化字符串:

例如cmdb系统,作为资产管理系统常常需要对数据进行过滤或查找,获取期望的信息。

tt=322
tem='%d' %tt

实现model

tem即为tt转换成的字符串

1.在这个示例项目中,需要实现对物理服务器的条件过滤,物理服务器的model列表如下(apps/assets/models.py文件):

常用的格式化字符串:

class Server(models.Model):
  """
  物理服务器
  """
  status_choice = (
    ('online', '上线'),
    ('offline', '下线'),
    ('normal', '正常'),
    ('abnormal', '异常')
  )

  server_name = models.CharField(verbose_name=u'服务器名称', max_length=128, blank=False, null=False)
  server_num = models.CharField(verbose_name=u'服务器编号', max_length=128, blank=True, null=True)
  brand = models.CharField(verbose_name=u'品牌', max_length=64, blank=True, null=True)
  model = models.CharField(verbose_name=u'型号', max_length=64, blank=True, null=True)
  cpus = models.IntegerField(verbose_name=u'cpu核数', default=0)
  ram = models.IntegerField(verbose_name=u'内存大小', default=0)
  disk = models.IntegerField(verbose_name=u'磁盘大小', default=0)
  product_date = models.DateTimeField(verbose_name=u'生产日期', auto_now_add=True)
  status = models.CharField(verbose_name=u'状态', max_length=16, choices=status_choice)

  created_time = models.DateTimeField(verbose_name=u'创建时间', auto_now_add=True)
  modified_time = models.DateTimeField(verbose_name=u'修改时间', auto_now_add=True)

  class Meta:
    verbose_name = u'服务器'
    verbose_name_plural = verbose_name

  def __str__(self):
    return self.server_name

%d 整数

实现serializer

%f%F 浮点数

接下来需要实现server这个model的序列化类,在apps/assets/serializers.py中编写:

%e%E 科学计数

class ServiceSerializer(serializers.ModelSerializer):
  """
  服务器序列化
  """

  class Meta:
    model = Server
    fields = ('id', 'server_name', 'server_num', 'brand', 'model', 'cpus',
         'ram', 'disk', 'product_date', 'status', 'created_time',
         'modified_time')

%g%G e 和%f/%E 和%F 的简写

对于fields来说,可以使用 _ all _
来代表所有的字段,除了model中定义的field外,序列化还可以指定其他的信息,比如嵌套信息或者自定义的信息。具体可以取决于业务逻辑。

%% 输出%

实现modelviewset

格式化操作符辅助指令

对于modelviewset,我们可以围绕它对用户请求做相应的处理。常见的是对model进行增加、删除、查找、修改等。在这部分我们需要实现ServerViewSet:

符号 作用

class ServerViewSet(viewsets.ModelViewSet):
  """
  物理服务器视图
  """
  queryset = Server.objects.all().order_by('-created_time')
  serializer_class = ServerSerializer
  pagination_class = MyFormatResultsSetPagination

* 定义宽度或者小数点精度

queryset指定返回列表的形式,所有的信息都返回,并且按照创建时间逆序排列,这样可以把最新的信息先返回,比较符合用户的操作习惯。

– 用做左对齐

serializer_class定义了返回的序列化格式为ServerSerializer所指定的fields内容

+ 在正数前面显示加号( + )

pagination_class
指定了分页的类型,这个MyFormatResultsSetPagination是我们的自定义类型

<sp> 在正数前面显示空格

实现router

#
在八进制数前面显示零(‘0′),在十六进制前面显示’0x’或者’0X'(取决于用的是’x’还是’X’)

如果用户想要访问server的信息,需要指定server的路由,这个和之前介绍的类似。需要的嗯一个一个router对象,并且将server的路由注册进去。

0 显示的数字前面填充‘0’而不是默认的空格

from rest_framework import routers

router = routers.DefaultRouter()
router.register(r'servers', views.ServerViewSet, base_name='servers')

urlpatterns = [
  url(r'^', include(router.urls))
]

% ‘%%’输出一个单一的’%’

对于servers的访问都由ServerViewSet进行处理。

(var) 映射变量(字典参数)

尝试访问

m.n m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

,信息如下:

示例:

图片 1

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:
网站地图xml地图