Python 使用argparse在控制台中运行脚本时出错

Python 使用argparse在控制台中运行脚本时出错,python,Python,hello制作了这个程序,就在这个页面上,但是代码是正确的,但是当在ubuntun控制台中执行脚本时,它给了我以下问题 from math import radians,cos,sin,asin,sqrt,atan2 import argparse parser=argparse.ArgumentParser() parser.add_argument('--lat1',type=float,metavar="",required=True, help="ent

hello制作了这个程序,就在这个页面上,但是代码是正确的,但是当在ubuntun控制台中执行脚本时,它给了我以下问题

from math import radians,cos,sin,asin,sqrt,atan2
import argparse


parser=argparse.ArgumentParser()
parser.add_argument('--lat1',type=float,metavar="",required=True, help="enter the first latitude")
parser.add_argument('--lon1',type=float,metavar="",required=True,help="enter the first length")
parser.add_argument('--lat2',type=float,metavar="",required=True,help="enter the second latitude")
parser.add_argument('--lon2',type=float,metavar="",required=True,help="enter the second length")
args=parser.parse_args()   
    
def python_distance(lat1,lon1,lat2,lon2):
    lat1=abs(radians(lat1))
    lon1=abs(radians(lon1))
    lat2=abs(radians(lat2))
    lon2=abs(radians(lon2))
    
    radio=6371.0
    delta_lon=lon2-lon1
    delta_lat=lat2-lat1
    h=sin(delta_lat/2)**2+cos(lat1)*cos(lat2)*sin(delta_lon/2)**2
    t=2*atan2(sqrt(h),sqrt(1-h))
    distancia=radio*t
    return distancia

if __name__=="_main_":
    print python_distance(args.lat1,args.lon1,args.lat2,args.lon2)
  


如果我尝试这个函数,它会给出精确的距离,但在执行脚本时,它会告诉我以下内容

yeferson@yeff:~/Escritorio$ python wha.py -13.594787 -89.827362 -13.966572 -88.891292

usage: wha.py [-h] --lat1  --lon1  --lat2  --lon2

wha.py: error: argument --lat1 is required

我在争论中遇到了一些问题,我可以在此问题上等待您的帮助

尝试以下方法:

python wha.py --lat1=-13.594787 --lon1=-89.827362 --lat2=-13.966572 --lon2=-88.891292

带有
--
的参数是可选参数,需要像
--lat1-13.594787
那样输入。由于所有可选参数都是必需的,您可以删除所有的
--
,它们现在是位置参数,您可以只输入
-13.594787
。此外,
\u main\u
应该是
\u main\u
(两侧双下划线),并且
print
缺少
()
@Adamkwm谢谢你,为了避免这个标志-我该做什么?你是什么意思?你的论点不是负数吗?谢谢你,为了避免用“-”这个符号,我该怎么办