如何将用户输入作为函数中的参数传递?

问题描述 投票:0回答:3

我正在尝试编写一个程序来查找两个州之间的英里距离。它应该提示用户从预定列表中选择一种状态。然后它应该识别状态及其相应的坐标。之后,程序应输入坐标作为函数“distance_calc”的参数,并生成以英里为单位的距离。我无法找到将用户输入连接到我创建的元组以及函数“distance_calc”的方法。我是 python 新手,因此非常感谢您的帮助。

 #assign coordinates to location variable
washington_dc = (38.9072, 77.0369)
north_carolina = (35.7596, 79.0193)
florida = (27.6648, 81.5158)
hawaii = (19.8968, 155.5828)
california = (36.7783, 119.4179)
utah = (39.3210, 111.0937)
print('This Program Calculates The Distance Between States In Miles')

def distance_calc(p1, p2):
    long_1 = p1[1] * math.pi/180
    lat_1 = p1[0] * math.pi/180
    long_2 = p2[1] * math.pi/180
    lat_2 = p2[0] * math.pi/180

    dlong = long_1 - long_2
    dlat = lat_1 - lat_2
    a = math.sin(dlat / 2) ** 2 + math.cos(lat_1) * math.cos(lat_2) * (math.sin(dlong / 2) ** 2)
    c = 2 * 3950 * math.asin(math.sqrt(a))
    result = round(c)
    print(result,"miles")
    return result
python function parameters tuples user-input
3个回答
0
投票

使用字典将州名称映射到坐标

states = {
    "washington_dc": (38.9072, 77.0369),
    "north_carolina": (35.7596, 79.0193),
    "florida": (27.6648, 81.5158),
    "hawaii": (19.8968, 155.5828),
    "california": (36.7783, 119.4179),
    "utah": (39.3210, 111.0937)
}

while True:
    state1 = input("First state: ")
    if state1 in states:
        break;
    else:
        print("I don't know that state, try again")

while True:
    state2 = input("Second state: ")
    if state2 in states:
        break;
    else:
        print("I don't know that state, try again")

distance_calc(states[state1], states[state2])

0
投票

您可以使用

dict
进行用户输入

state_dict={1:washington_dc,2:north_carolina,3:florida,4:hawaii,5:california,6:utah}
states = ['forwashington_dc','north_carolina','florida','hawaii','california','utah']

a = [ print("Choose id {} for {}".format(states.index(st)+1,st)) for st in states]
p1 = int(input("Choose Desired States id at Start :"))
p2 = int(input("Choose Desired States id at Start :"))

print("You Have Choosen Starting Point :",states[p1])
print("You Have Choosen End Point :",states[p2])

distance_calc(state_dict[p1], state_dict[p2])

0
投票

状态={ “华盛顿特区”:(38.9072,77.0369), “北卡罗来纳州”:(35.7596,79.0193), “佛罗里达”:(27.6648,81.5158), “夏威夷”:(19.8968,155.5828), “加利福尼亚州”:(36.7783, 119.4179), “犹他州”:(39.3210,111.0937) }

虽然正确: state1 = input("第一个状态:") 如果 state1 在状态中: 休息; 别的: print("我不知道那个状态,再试一次")

虽然正确: state2 = input("第二个状态:") 如果 state2 在状态中: 休息; 别的: print("我不知道那个状态,再试一次")

distance_calc(状态[状态1],状态[状态2])

© www.soinside.com 2019 - 2024. All rights reserved.