Preguntas de programación de Python nivel 2: encontrar la distancia entre dos puntos

1. Requisitos del tema:

Use Python para calcular la distancia entre dos puntos mientras conserva 2 dígitos de salida después del punto decimal.

Requisitos del tema

2. Resolución de problemas

Aquí hay tres algoritmos, el último algoritmo es mi algoritmo personal, quizás no sea el mejor, pero proporciona una nueva forma de pensar.

1. Respuesta oficial, con comentarios

# -*- coding:utf-8 -*-
'''
This is a python123.io file.
'''
ntxt = input("")  #从键盘上接受输入1 1 2 2,返回字符串"1 1 2 2"赋值给ntxt
nls = ntxt.split(" ")
#使用split(" ")函数分割字符串内容," "中包含了一个英文空格,并返回了一个列表给nls
x1 = eval(nls[0]) #将列表nls中第一个元素被eval函数识别为数字:1
y1 = eval(nls[1]) #将列表nls中第二个元素被eval函数识别为数字:1
x2 = eval(nls[2]) #将列表nls中第三个元素被eval函数识别为数字:2
y2 = eval(nls[3]) #将列表中第四个元素被eval函数识别为数字:2
r = pow(pow(x2-x1, 2) + pow(y2-y1, 2), 0.5)  #根据两点间距离的数学公式求出距离
print("{:.2f}".format(r)) #保留2位小数输出距离1.41

La ventaja de la versión oficial es que no necesita importar paquetes estándar, sino que usa directamente la función pow() para resolver el problema.

2. Optimización de la versión oficial

También podemos usar la comprensión de listas para optimizar aún más la versión oficial, reducir el código a cinco líneas y mejorar en gran medida la eficiencia de ejecución.

ntxt = input("")
nls = ntxt.split(" ")
x1,y1,x2,y2 = [eval(i) for i in nls]
r = pow(pow(x2-x1,2) + pow(y2-y1,2), 0.5) 
print("{:.2f}".format(r))

3. Edición personal

En la versión personal, debe usar sqrt en matemáticas, puede extraer directamente el cuadrado y, al mismo tiempo, aprovechar la función de número de columna de python, puede asignar valores directamente a cuatro variables numéricas sin rebanar, y luego usar la función de mapa para convertir caracteres en números en lotes es un valor numérico. La ventaja de esto es que la cantidad de código es menor y la eficiencia de ejecución es alta, pero necesita importar matemáticas.

import math
ntxt = input("").split()
x1,y1,x2,y2 = map(eval,ntxt)
abs_y = (y1-y2)**2+(y1-y2)**2
print("{0:.2f}".format(math.sqrt(abs_y)))

Con el código anterior, solo necesitamos cinco líneas para obtener el resultado que queremos, ahorrando la mitad del código proporcionado por el funcionario.

3. Reflexión post-escolar

  1. En general, existen múltiples soluciones para los problemas de programación de nivel 2 de Python. Intentar usar diferentes soluciones puede mejorar su capacidad de resolución de problemas. Al mismo tiempo, puede comparar múltiples métodos para descubrir las diferencias y las ventajas y desventajas de los dos. , Para comprender más habilidades de programación.
  2. A veces, no podemos limitarnos demasiado al código oficial, pero tenemos que pensar más y explorar más y mejores soluciones. Si hay módulos listos para usar, podemos usarlos de manera eficiente, lo que puede simplificar el algoritmo, reducir la cantidad del código y mejorar la eficiencia de la ejecución.

Guess you like

Origin blog.csdn.net/henanlion/article/details/130890887