问题描述
您好,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")