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)