本文實例講述了python3生成隨機數的方法。分享給大家供大家參考。具體實現方法如下:
該實例是根據一本書上看到過一個隨機數的小程序,經過自己改動,變為了一個猜數字的小游戲,現在在python3下重寫了一遍。
這是一個控制臺下的猜數程序,winxp+python3.2+eric5和IDLE測試通過,但直接用winxp的命令行運行有問題,原因還未知,慢慢找。ubuntu+python3.1測試通過。
具體實現代碼如下:
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程序設計有所幫助。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
