咔叽游戏

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 351|回复: 0

[python] python3生成随机数实例

[复制链接]
  • TA的每日心情
    无聊
    2019-6-2 14:11
  • 签到天数: 4 天

    [LV.2]圆转纯熟

    发表于 2020-5-1 10:48:31 | 显示全部楼层 |阅读模式
    本文实例讲述了python3生成随机数的方法。分享给大家供大家参考。具体实现方法如下:
    该实例是根据一本书上看到过一个随机数的小程序,经过自己改动,变为了一个猜数字的小游戏,现在在python3下重写了一遍。
    这是一个控制台下的猜数程序,winxp+python3.2+eric5和IDLE测试通过,但直接用winxp的命令行运行有问题,原因还未知,慢慢找。ubuntu+python3.1测试通过。
    具体实现代码如下:
    # -*- coding: utf-8 -*-

    import Image,ImageDraw,ImageFont

    import random

    import math, string  



    class RandomChar():

      """用于随机生成汉字"""

      @staticmethod

      def Unicode():

        val = random.randint(0x4E00, 0x9FBF)

        return unichr(val)  



      @staticmethod

      def GB2312():

        head = random.randint(0xB0, 0xCF)

        body = random.randint(0xA, 0xF)

        tail = random.randint(0, 0xF)

        val = ( head << 8 ) | (body << 4) | tail

        str = "%x" % val

        return str.decode('hex').decode('gb2312')  



    class ImageChar():

      def __init__(self, fontColor = (0, 0, 0),

                         size = (100, 40),

                         fontPath = 'wqy.ttc',

                         bgColor = (255, 255, 255),

                         fontSize = 20):

        self.size = size

        self.fontPath = fontPath

        self.bgColor = bgColor

        self.fontSize = fontSize

        self.fontColor = fontColor

        self.font = ImageFont.truetype(self.fontPath, self.fontSize)

        self.image = Image.new('RGB', size, bgColor)  



      def rotate(self):

        self.image.rotate(random.randint(0, 30), expand=0)  



      def drawText(self, pos, txt, fill):

        draw = ImageDraw.Draw(self.image)

        draw.text(pos, txt, font=self.font, fill=fill)

        del draw  



      def randRGB(self):

        return (random.randint(0, 255),

               random.randint(0, 255),

               random.randint(0, 255))  



      def randPoint(self):

        (width, height) = self.size

        return (random.randint(0, width), random.randint(0, height))  



      def randLine(self, num):

        draw = ImageDraw.Draw(self.image)

        for i in range(0, num):

          draw.line([self.randPoint(), self.randPoint()], self.randRGB())

        del draw  



      def randChinese(self, num):

        gap = 5

        start = 0

        for i in range(0, num):

          char = RandomChar().GB2312()

          x = start + self.fontSize * i + random.randint(0, gap) + gap * i

          self.drawText((x, random.randint(-5, 5)), RandomChar().GB2312(), self.randRGB())

          self.rotate()

        self.randLine(18)  



      def save(self, path):

        self.image.save(path)
    希望本文所述对大家的Python程序设计有所帮助。

    原文地址:https://www.jb51.net/article/56460.htm

    QQ|免责声明|小黑屋|手机版|Archiver|咔叽游戏

    GMT+8, 2024-3-28 21:08

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表