在Python 3.x上协助测量转换程序

问题描述

您好,stackoverflow的好人。我是Python的新手,只是写了我的第二个程序。它有效,但我希望它会更好。基本上,我做了一个转换距离测量值的程序。我只想 接受列表中的输入。然后只能取数字。然后仅再次从我的列表中获取输入。我找不到任何帮助,非常感谢。这是代码的初始行。我将不包括其余部分,因为这需要额外的几十行来完成所有的数学运算。谢谢。

print("Meters | Feet | Yards | Miles | Kilometers | Inches | Centimeters")
measure1 = input("What would you like to measure? ")
measure1insensitive = (measure1.casefold())
num1 = input("How much? Enter digit: ")
num1_int = int(num1)
print("Meters | Feet | Yards | Miles | Kilometers | Inches | Centimeters")
measure2 = input("What do you want to convert this to? ")
measure2insensitive = (measure2.casefold())

解决方法

在Python中,您可以使用方便的函数in

如果您有列表,则说"my string" in ["list",'with','strings']将返回False,因为“我的字符串”与任何列表项都不匹配。

与字符串类似,"my" in "my string"返回True,因为它是子字符串。

如果您想变得懒惰并将所有选项的当前字符串转换为列表(这将阻止某人输入"In" and "In" in "Inches"True,而这不是您想要的),则可以采取"My | string | with | options".split('|').strip()的输出在'|'处中断字符,并在字符串的两端去除空格。

,

我们可以创建所有接受的度量类别的列表。然后,我们可以将所有提示置于无限循环中,当用户输入可接受的类别时,该无限循环将中断。我们使用“ in”运算符对此进行检查。然后,我们可以使用List的.idex()函数来识别度量类别的索引,然后可以使用这些索引进行逻辑运算。

   measurments = ["meters","feet","yards","miles","kilometers","inches","centimeters"]
print("Meters | Feet | Yards | Miles | Kilometers | Inches | Centimeters")
while True:
    measure1 = input("What would you like to measure? ")
    measure1insensitive = (measure1.casefold())
    if measure1insensitive in measurments:
        break

m1 = measurments.index(measure1insensitive)
while True:
    num1 = input("How much? Enter digit: ")
    num1_f = float(num1)
    if (num1_f.is_integer()):
        break
num1_int = int(num1_f)
print("Meters | Feet | Yards | Miles | Kilometers | Inches | Centimeters")
while True:
    measure2 = input("What do you want to convert this to? ")
    measure2insensitive = (measure2.casefold())
    if measure2insensitive in measurments:
        break
m2 = measurments.index(measure2insensitive)
# Your logic
if m1==0: # From meters
   if m2==1: # To feets
        print("do the logic")