随机生成一个两个汉字的合成词

# -*- coding: utf-8 -*-
import random

class GenNickName:
    def __init__(self,num=30):
        #print "__init__"
        self.list=[]
        self.wordNum=0
        self.num=num
        self.nickNames=[]

    def getWordsFromTxt(self):
        file=open("source.txt","r")
        for l in file.readlines():
            #print "l: " +l
            line=l.decode("gbk").split()
            #print len(line)
            for e in line:
                #print e
                self.list.append(e)
        #print len(self.list)
        #print "l: %s" %self.list
        file.close()

    def genNickName(self):
        self.getWordsFromTxt()
        self.wordNum=len(self.list)-1
        for k in range(self.num): 
            i=random.randint(0, self.wordNum)
            j=random.randint(0, self.wordNum)
            #print len(self.list)
            #print "one nick name : "+self.list[i]+self.list[j]
            self.nickNames.append(self.list[i]+self.list[j])

    def showNames(self):
        print "All nicks names:"
        print "*"*50
        i=0
        for name in self.nickNames:
            print name,
            i=i+1
            if(i%10==0):
                print " "       
        print "*"*50
            
if __name__=="__main__":
    g = GenNickName(50)
    g.genNickName()
    g.showNames()

代码如上所示。

实现比较简单,主要难点在于,从txt文件中读取汉字后的字符分割。正常情况下,用.split函数即可,但是文中使用的是汉字,而汉字的编码是gbk,所以在分割之前先要用gbk解码。

每次运行,可以生成50个随机组合的词,如下所示:

All nicks names:
**************************************************
啊由 炉痼 柱著 摩辫 押至 炎奇 养识 励赌 类外 通朝  
冯又 郊祥 潜泽 挝打 侨篡 杀拾 传曰 崩朕 纷慎 畔诱  
坟趁 晨宋 名麟 痒盟 澳辽 粒紫 汛喃 国萨 娥畜 济锤  
稿俘 砌产 冤映 桅托 君蜡 勒玲 肯模 酮舒 蛋陪 屁谦  
湿氰 梗煎 诸邹 捍佃 音撞 革色 造菜 猎吉 字捻 报碧  
**************************************************
时间: 2024-08-05 19:39:57

随机生成一个两个汉字的合成词的相关文章

java 随机生成一个中文、判断某个string是否是中文以及打印出全部的中文

现在网上大多数用于判断中文字符的是 U+4E00..U+9FA5 这个范围是只是"中日韩统一表意文字"这个区间,但这不是全部,如果要全部包含,则还要他们的扩展集.部首.象形字.注间字母等等; 2E80-A4CF: 包含了中日朝部首补充.康熙部首.表意文字描述符.中日朝符号和标点.日文平假名.日文片假名.注音字母.谚文兼容字母.象形字注释标志.注音字母扩展.中日朝笔画.日文片假名语音扩展.带圈中日朝字母和月份.中日朝兼容.中日朝统一表意文字扩展A.易经六十四卦符号.中日韩统一表意文字.彝

随机生成一个数独

最近学习用Java编写GUI程序,感觉从做一个小东西入手最好,选择了编写一些小游戏开始,第一个为数独游戏. http://en.wikipedia.org/wiki/Sudoku 编写数独游戏第一步考虑的就是该如何生成一个原始的数独题目,要想生成数独题目最简单的办法就是先随机生成一个完整的数独,然后从中摘除一些数字,这样就可以生成一道数独题.所以需要考虑如何随机的生成一个完整的数独,这里考虑使用回溯法生成: 在数独的某个位置插入一个1~9的值 如果这个值能正常插入,则递归在下一个位置插入 如果这

生成一个包含所有汉字的字符串 "一"字开始"\4e00 到9fa5

/** *    生成一个包含所有汉字的字符串 "一"字开始"\4e00 到9fa5 *    思路: *    1.既然是包含所有,肯定是从一个字符,到另一个字符之间的所有字符 *    2.因为String对象每创建一个不一样的,都会开辟空间,避免浪费内存,用STringBuilder的拼接更好 *  3.因为是输出所有拼接后的问题,所以用循环 *  4.为了避免太多一行显示不下,50个一换行显示,所以需要一个计数器 * *  步骤 *  1.循环变量初始化,这里循环变量

转:在0~N(不包括N)范围内随机生成一个长度为M(M <= N)且内容不重复的数组

1. 最朴素暴力的做法. void cal1() { int i = 0, j = 0, num = 0; int result[M]; result[0] = rand() % N; //第一个肯定不重复, 直接加进去 for (i = 1; i < M; i++) //获得剩下的(M-1)个随机数 { num = rand() % N; //生成0 ~ N之间的随机数字 for (j = 0; j < i; j++) { if (num == result[j]) //如果和result数

随机生成一个5位以内的数,然后输出该数共有多少位,每位分别是什么

//方法一: <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> /* * 函数名:randomFiveNumber * 参数:无 * 作业:随机生成一个5位以内的数,然后输出该数共有多少位,每位分别是什么 */ function ran

PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。

Python 练习 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的数,屏幕显示"太大了,请重新输入"如果小于预设的数,屏幕显示"太小了,请重新输入"如此循环,直到猜中,显示"恭喜你,猜中了!共猜了N次"N为用户猜测次数. 答案: import random def guess_number(): true_num = random.randint(1, 100) user_n

JAVA如何随机生成一个汉字

package com.test; import java.math.BigDecimal; import java.math.RoundingMode; import java.util.Random; /** * @author QiaoJiafei * @version 创建时间:2015年12月21日 下午2:53:44 * 类说明 */ public class TestSiSheWuRu { public static void main(String args[]) { TestS

《Unity3d-在地图中随机生成一个物体的代码》

//思路:使用.Instantiate方法控制生成 但是在生成前一定要计算好生成的鱼儿的条件控制 public class FishController : MonoBehaviour{ public int maxCount = 10; //鱼池中鱼最大存在的个数 public int count = 0; //当前鱼池中鱼的个数 public GameObject[] fishArray; //设置与鱼的数组随机生成鱼 public float timer = 0; //生成鱼的时间间隔 p

在java中随机生成一个无序且长度不大于10的字符串

package xiangmu; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; public class TestCollection { /* * 通过定义Collections.sort()方法对String泛型进行List排序 * 创建一个String泛型List,插入一个不超过10的随机字符串 */ /** * @param