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设计】。

相关文章

python使用PIL给图片添加文字生成海报示例

python使用PIL给图片添加文字生成海报示例

前言 曾经,我也算半个所谓的文学青年。大学前两年大部分时间泡在图书馆看各种文学类的书。 那时的我,对于未来有很多遐想:写小说、写时评、写诗歌... 总而言之,就是成为一个文字工作者 现...

Python 下载及安装详细步骤

Python 下载及安装详细步骤

安装python分三个步骤: *下载python *安装python *检查是否安装成功 1、下载Python (1)python下载地址https://www.python.org/d...

python实现汉诺塔算法

题目: 汉诺塔给出最优解,如果对汉诺塔的定义有不了解,请翻看数据结构教材。 除了最基本的之外,还有一题,给定一个数组,arr=[2,3,1,2,3],其含义是这是一个有5个圆盘的汉诺塔...

python实现socket端口重定向示例

python实现socket端口重定向示例

可以很轻松的在端口12345开启共享,效果如下: 要实现我想要的功能,只需要将端口重定向就行了,代码如下: 复制代码 代码如下:#! /usr/bin/python''' &n...

对Python3中的print函数以及与python2的对比分析

对Python3中的print函数以及与python2的对比分析

本文首先介绍在python3中print函数的应用,然后对比在pyhton2中的应用。(本文作者所用版本为3.6.0) 首先我们通过help(print)命令来查看print函数的相关信...