Love And Program 2021-08-03 10:13 采纳率: 77.8%
浏览 368
已结题

蓝桥杯直线问题,如何解决惰性

在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。

给定平面上 2 × 3 个整点 {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},即横坐标是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数的点。这些点一共确定了 11 条不同的直线。
我很奇怪的是我是想得到每个点,然后依次用坐标去减去他们,当x1!=x2并且y1!=y2的时候我觉得用一个and语句就可以解决,但事实上并非如此,打印出来的结果很奇怪,我看着是惰性问题,但是这也有很多不一样的地方不解,希望得到lao shi们的帮助。(我想用前两个循环得到的(x1,y1)后一个循环代表(x2,y2),这是前面计算出来的,但是结果却出来的让我kuhuo)

-
l=[]
n=2
m=3
t=0
xx=[]
for x in range(0,n):
    for y in range(0,m):
        l.append([x,y])

for x1 in range(0,n):
    for y1 in range(0,m):
        for x2 in range(0,n):
            if x1!=x2 and y1!=l[x2][1]:
                k=(x1-l[x2][0])/(y1-l[x2][1])
                xx.append([x1,y1,l[x2][0],l[x2][1]])
                xx.append(k)
print(len(xx))

[0, 0, 0, 1], -0.0, [0, 2, 0, 1], 0.0, [1, 1, 0, 0], 1.0, [1, 2, 0, 0], 0.5]

  • 写回答

1条回答 默认 最新

  • 听霄 2021-08-03 11:36
    关注

    img

    你可以参考一下以下代码

    
    
    l=[]
    n=2
    m=3
    t=0
    xx=[]
    for x in range(0,n):
        for y in range(0,m):
            l.append([x,y])
    print(l)      # l就是6个点了,直接在l里循环取点就行
    for i in l:    # i的值对应(x1,y1)
        for j in l:    #j的值对应(x2,y2)
            if i != j and i[1]-j[1] != 0 :     # 这里筛出来的有重复的直线,条件你还需要自己再去加
                k = (i[0]-j[0])/(i[1]-j[1])
                xx.append([i[0],i[1],j[0],j[1]])
                xx.append(k)
    print(len(xx))
    print(xx)
    
    
    

    若有帮助,请点击一下“采纳”,谢谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月5日
  • 创建了问题 8月3日

悬赏问题

  • ¥15 yolov8边框坐标
  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真