定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)

#习题2:定义一个类:实现功能可以返回随机的10个数字,随机的10个字母,
#随机的10个字母和数字的组合;字母和数字的范围可以指定

class RandomString():

    #随机数选择的范围作为参数,如(1~100)字母 (‘A‘~‘z‘),大写字母在前 按ascii值排列先后
    def __init__(self,start_num=0,end_num=100,start_alpha=‘A‘,end_alpha=‘z‘):
        import string
        if not isinstance(start_num,int) or not isinstance(end_num,int) or         not isinstance(start_alpha,str) or not isinstance(end_alpha,str) or         (start_alpha not in string.ascii_letters or end_alpha not in string.ascii_letters):
            print(‘参数类型错误,请重新输入!‘)
            return None
        self.start_num=start_num
        self.end_num=end_num
        self.start_alpha=start_alpha
        self.end_alpha=end_alpha

    #生成要求数量随机数字,num 随机数的数量
    def random_digits(self,num):
        print(‘self.start_num,self.end_num:‘,self.start_num,self.end_num)
        if not isinstance(num,int):
            print(‘数字类型输入错误,请重新输入‘)
            return None
        from random import randint
        num_list=[]
        for i in range(num):
            num_list.append(randint(self.start_num,self.end_num))
        return num_list

    #生成要求数量随机字母,大小写混合
    def random_letters(self,num):
        if not isinstance(num,int):
            print(‘数字类型输入错误,请重新输入‘)
            return None
        from random import randint
        import string
        all_letters=string.ascii_uppercase+string.ascii_lowercase
        start_position=all_letters.find(self.start_alpha)
        end_position=all_letters.find(self.end_alpha)
        if start_position>end_position:
            start_position,end_position=end_position,start_position

        letters_list=[]
        for i in range(num):
            letters_list.append(string.ascii_letters[randint(start_position,end_position)])
        return letters_list

    def random_digits_letters(self,num):
        digits_string=list(range(self.start_num,self.end_num+1))
        print(‘digits_string‘,digits_string)
        import string
        all_letters=string.ascii_uppercase+string.ascii_lowercase
        print(‘all_letters‘,all_letters)
        print(‘self.start_alpha‘,self.start_alpha)
        print(‘self.end_alpha‘,self.end_alpha)
        start_position=all_letters.find(self.start_alpha)
        end_position=all_letters.find(self.end_alpha)
        letters_string=list(all_letters[start_position:end_position+1])
        print(‘letters_string‘,letters_string)

        from random import choice
        all_string=digits_string+letters_string
        print(‘all_string‘,all_string)
        all_list=[]
        for i in range(num):

            all_list.append(choice(all_string))
        return all_list

randomdigitalpha=RandomString(2,100,‘W‘,‘e‘) #
print(randomdigitalpha.start_num)
print(randomdigitalpha.random_digits(10))

print(randomdigitalpha.random_letters(5))

print(randomdigitalpha.random_digits_letters(15))

原文地址:https://www.cnblogs.com/xiaoxiao075/p/10251700.html

时间: 2024-08-10 11:22:37

定义一个类:实现功能可以返回随机的10个数字,随机的10个字母, 随机的10个字母和数字的组合;字母和数字的范围可以指定,类似(1~100)(A~z)的相关文章

C#1(.net和C#的关系、VS与.net的对应关系、VS2012常用的几种应用程序、C#定义一个类的方法、类页面内容的解释、定义Person的类、调用Person类的方法、命名规范、数值类型)

1..net和C#的关系 .net是一个开发平台,C#是应用在.net平台上的一种语言.   2.VS与.net的对应关系  3.VS2012常用的几种应用程序 第一种是Windows窗体应用程序,也即是我们常用的C/S端的应用软件: 第二种是控制台应用程序,主要是用来学习调试C#代码的(老师上课应用的模式): 第三种是空Web应用程序,建立空的网页模式,B/S模式: 第四种是Web 窗体应用程序,建立后会生成一些常用的网页组件和功能,例如JS.image等,也是B/S模式. 4.C#定义一个类

ExtJs--07--Ext.define定义一个类的过程

Ext.onReady(function(){ //Ext定义一个类 Ext.define( "Person", { config:{ name:"jack", age:22 }, fangfa:function(){ Ext.Msg.alert("标题信息","提示内容信息") } , constructor:function(config){ //测试构造器调用没有及参数传递进来没有 // for(var attr in

面向对象定义一个类

1定义一个类格式:public class 类名{类体},能编译不能运行类名首字母必须大写,以后每个单词首字母大写2定义属性和声明变量一样格式:属性类型 属性名;,属性名首字母小写以后每个单词首字母大写属性类型可以是任意类型(基本数据类型和引用数据类型,比如String)3.定义方法格式 public void 方法名(参数){语句(方法体)}方法名首字母小写以后每个单词首字母大写 注意事项:类里只能有属性和方法(方法块,代码块),语句必须写到方法里 4.定义对象:类名 对象名 = new 类名

Java TreeSet集合排序 && 定义一个类实现Comparator接口,覆盖compare方法 && 按照字符串长度排序

package TreeSetTest; import java.util.Iterator; import java.util.TreeSet; import javax.management.RuntimeErrorException; /* 可以对set集合中的元素进行排序,其底层的数据结构是二叉树, 保证元素唯一性的依据是compareTo和return 0; TreeSet排序的第一种方式 让元素自身具备比较性 元素需要实现Comparable接口,覆盖compareTo方法 这种方式

如何定义一个类——单一职责原则

单一职责原则:就一个类而言,应该仅有一个引起他变化的原因. 1 一个老师类的例子 或者说在外部看来,一个类只应该能看到它的类的相关功能.如老师类只应该负责教授知识,备课,但是不应该负责开车.切合实际的说一个TaskService类不应该包含处理时间的类,他可以是private的,但是肯定不能是public的.这里引出另一个角度 2 如何看待一个类? 2.1通常的看法 通常的看法是,类是由成员属性和成语方法组成的数据结构或者是现实事物的抽象如对现实中的人抽象出Person,他具备人的基本属性和基本

1217.2——定义一个类+方法声明调用

新建一个类 new file  ->cocoa class  (父类NSObject) .h文件 用来定义属性和方法 .m文件 用来具体实现 方法声明: 1 #import <Foundation/Foundation.h> 2 @interface Person : NSObject{ 3 NSString *name; 4 int age; 5 NSString *address; 6 } 7 -(void)useTools; //无参无返回值的方法声明 8 -(void)setNa

定义一个类Point,代表一个点,public属性有x和y,方法有显示点坐标 show(),构造函数有两个参数分别给x,y赋值,在main方法中构造两个对象,再创建一方法(getMiddle)为取两个点构成线段的中点的坐标,参数为2个点对象,调用此方法后得到一个新的点,编写Application,显示该对象的坐标值。

这个题让我更加明白了类创建对象的实质 代码中用到:1.对象作形参;2.对象作返回值 以下用代码具体分析: 1 class Point1{ 2 public double x; 3 public double y; 4 Point1(){} 5 6 public Point1(double x,double y){ 7 this.x=x; 8 this.y=y; 9 } 10 11 public void show(){ 12 System.out.println("x="+x+&quo

定义一个整型数组,返回该数组中子数组和的最大值

对于老师上课的题目,要想获得子函数最大值,首先进行数组的遍历,在遍历起初,对最大值进行初始化为数组的第一个元素,每次遍历,求得该子数组的和,并将此和与最大值进行比较,若小于 最大值,则进行下一次的遍历,直到结束.此处用到三个for循环,来进行次数的控制.第一个 for(i = 0; i <length; i++),用来完成所有数组的循环,第二个for(j = i; j <length; j++)用来表示从第几个元素开始,寻找子数组,第三个 for( k = i; k <= j; k++)

按要求编写一个Java应用程序: (1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。 (2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性, 和计算体积的方法。 (3)编写一个测试类,对以上两个类进行测试,创建一个长方体,定义其长、 宽、高,输出其底面积和体积。

package jvxing; public class Jvxing { //成员变量 private double width; private double chang; public double getWidth() { return width; } public void setWidth(double width) { this.width = width; } public double getChang() { return chang; } public void setC