python距离测量的方法

yipeiwu_com5年前Python基础

之所以写这个,其实就是希望能对距离有一些概念,当然这个也是很基础的,不过千里之行始于足下嘛,各种路径算法,比如a*什么的都会用到这个

距离测量有三种方式

1、欧式距离,这个是最常用的距离测量方式

((x1-x2)^2 + (y1-y2)^2)^0.5

得到一个原型区域的距离

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #((0-x)**2 + (0-y)**2)**0.5
  if ((0-x)**2 + (0-y)**2)**0.5 <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

2、街区距离,这个一般游戏中用到的会比较多,之所以叫街区,是因为西方街道通常都是东南,东北,西南,西北这样

|x1-x2| + |y1-y2|

得到一个菱形区域的距离

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #(abs(0-x) + abs(0-y))
  if (abs(0-x) + abs(0-y)) <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

3、棋盘距离,这个就好理解,像棋盘一样的方格子

max(|x1-x2|, |y1-y2|)

得到一个方形区域的距离

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #max(abs(0-x),abs(0-y))
  if max(abs(0-x),abs(0-y)) <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

关于PyTorch 自动求导机制详解

关于PyTorch 自动求导机制详解

自动求导机制 从后向中排除子图 每个变量都有两个标志:requires_grad和volatile。它们都允许从梯度计算中精细地排除子图,并可以提高效率。 requires_grad 如...

一篇文章弄懂Python中所有数组数据类型

前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种“数组”类型的实现。 list tuple array.array str bytes...

关于阿里云oss获取sts凭证 app直传 python的实例

首先安装需要的模块 pip install aliyun-python-sdk-core pip install aliyun-python-sdk-sts 获取需要的5个参数 g...

python3 线性回归验证方法

如下所示: #-*- coding: utf-8 -*- import pandas as pd import numpy as np from patsy.highlevel im...

python多进程控制学习小结

python多进程控制学习小结

前言: python多进程,经常在使用,却没有怎么系统的学习过,官网上面讲得比较细,结合自己的学习,整理记录下官网:https://docs.python.org/3/library/m...