pythoncde-实战1--坐标生成

pythoncde-实战1-循环之坐标生成

import random


def get_numbers(start:int,end:int,number:int):
    """
    函数作用:输入整数起始、结束的数值,以及一个生成多少个数字的number数字
    作用:在start与end的整数之间生成一个number个数字的列表
    :param start:
    :param end:
    :param number:
    :return:
    """
    # 定义一个结合存储结果
    numbers=[]
    while True:
        # 获取随机值[值的范围是上面的函数输入的参数范围]
        tempint=(random.randint(start,end))
        # 保留取一个随机的六位数字0.123456类似这种
        tempfloat=round((random.random()),6)
        # tempfloat=0.119999
        # 如果出现了类似这样的数字0.12345  小数数字部分不足6位的需要补齐小数后6位数字
        if len(str(tempfloat))<8:
            tempfloat=tempfloat+0.000111

        temp=float(tempint)+float(tempfloat)

        # 判断当前数字是否在列表中,如果不再就是添加到列表中
        if temp not in numbers:
            numbers.append(temp)
        # 判断数量是否满足要求
        if len(numbers)==number:
            break
    return numbers


if __name__ == '__main__':
    listrange1=get_numbers(100,200,6)
    print(listrange1)

2.更新版本信息

import random


def get_numbers(start:int,end:int,number:int=6):
    """
    函数作用:输入整数起始、结束的数值,以及一个生成多少个数字的number数字
    作用:在start与end的整数之间生成一个number个数字的列表
    :param start:
    :param end:
    :param number:
    :return:
    """
    # 定义一个结合存储结果
    numbers=[]
    while True:
        # 获取随机值[值的范围是上面的函数输入的参数范围]
        tempint=(random.randint(start,end))
        # 保留取一个随机的六位数字0.123456类似这种
        tempfloat=round((random.random()),6)
        # tempfloat=0.119999
        # 如果出现了类似这样的数字0.12345  小数数字部分不足6位的需要补齐小数后6位数字
        if len(str(tempfloat))<8:
            tempfloat=tempfloat+0.000111

        temp=float(tempint)+float(tempfloat)

        # 判断当前数字是否在列表中,如果不再就是添加到列表中
        if temp not in numbers:
            numbers.append(temp)
        # 判断数量是否满足要求
        if len(numbers)==number:
            break
    return numbers


if __name__ == '__main__':
    itemp=input("请输入横坐标的范围数值,例如在100,200范围内:100,200 :")
    xx=itemp.split(",")
    x1=int(xx[0])    # 横坐标范围的起始值
    x2=int(xx[1])     # 横坐标范围的最终值
    # lihengzuobiao=get_numbers(x1,x2,6)
    lihengzuobiao=get_numbers(x1,x2)
    print(lihengzuobiao)

    # 纵坐标范围
    itempzb=input("请输入纵坐标的范围数值,例如在100,200范围内:100,200 :")
    yy=itemp.split(",")
    y1=int(yy[0])    # 横坐标范围的起始值
    y2=int(yy[1])     # 横坐标范围的最终值
    # lihengzuobiao=get_numbers(x1,x2,6)
    lizongzuobiao=get_numbers(y1,y2)
    print(lizongzuobiao)

=================================
3.另外一种办法生成坐标的方式
1.利用random中uniform(11.11,99.99)可以生成11.11—99.99之间的随机浮点数
2.利用math.modf(浮点数)===>可以分解出,整数,小数以元组方式

import random
import math


def zbsj(dataint:float,digt:float):
    """
    利用随机小数,截取6位小数,保证位数是6位,最后不能为0
    随机数产生的函数:random.uniform(dataint,digt),
    可以random.uniform(11.11,99.99),可以产生这个范围的随机数
    可用“math.modf(ret1)[0]”产生例如(101,23423423)这样的整数和
    小数组成的元组
    :param dataint:
    :param digt:
    :return:
    """
    flag = True
    listlab=[]
    while flag:

        ret1=random.uniform(dataint,digt)
        # print(ret1)
        # print("="*20)
        m1=round(math.modf(ret1)[0],6)
        if len(str(m1))<8:
            m1=m1+0.000001

        mzs=math.modf(ret1)[1]
        print(math.modf(ret1))
        m=m1+mzs
        listlab.append(m)



        if len(listlab)>9:
            flag=False
    print(listlab)




if __name__ == '__main__':
    zbsj(11.11,99.99)
    zbsj(1000.11,9999.99)


优化版本2021:2:23
优化内容:“random.sample”可以从制定的列表中选择出特定长度的字符串

import random


def get_numbers(start:int,end:int,number:int):
    """
    函数作用:输入整数起始、结束的数值,以及一个生成多少个数字的number数字
    作用:在start与end的整数之间生成一个number个数字的列表
    :param start:
    :param end:
    :param number:
    :return:
    """
    # 定义一个结合存储结果
    numbers=[]
    while True:
        # 获取随机值[值的范围是上面的函数输入的参数范围]
        tempint=(random.randint(start,end))
        # 保留取一个随机的六位数字0.123456类似这种
        # tempfloat=round((random.random()),6)
        tempf1=random.sample(list("123456789"),6)
        tempf2="".join(tempf1)
        tempfloat =float(tempf2)*0.000001
        # tempfloat=0.119999
        # 如果出现了类似这样的数字0.12345  小数数字部分不足6位的需要补齐小数后6位数字
        # if len(str(tempfloat))<8:
        #     tempfloat=tempfloat+0.000111

        temp=float(tempint)+float(tempfloat)

        # 判断当前数字是否在列表中,如果不再就是添加到列表中
        if temp not in numbers:
            numbers.append(temp)
        # 判断数量是否满足要求
        if len(numbers)==number:
            break
    return numbers


if __name__ == '__main__':
    listrange1=get_numbers(200,900,5)
    print(listrange1)


猜你喜欢

转载自blog.csdn.net/wtt234/article/details/113545283