想知道是否有更好的方法来做到这一点。 Python是我的第一个编程语言。
while True:
amount_per_month = raw_input('\nWhat is the monthly cost?\n==> ')
# seperate dollars and cents.
amount_list = amount_per_month.split(".")
# checking if int(str) is digit
if len(amount_list) == 1 and amount_list[0].isdigit() == True:
break
# checking if float(str) is digit
elif len(amount_list) == 2 and amount_list[0].isdigit() and amount_list[1].isdigit() == True:
break
else:
raw_input('Only enter digits 0 - 9. Press Enter to try again.')
continue
答案 0 :(得分:7)
尝试将其设为float
并处理无法转换的异常。
try:
amount_per_month = float( raw_input('What is the monthly cost?') )
except (ValueError, TypeError) as e:
pass # wasn't valid
TypeError
在这里是多余的,但是如果转换是在其他Python对象(不仅仅是字符串)上运行的话,则需要捕获float( [1, 2, 3] )
之类的内容。
答案 1 :(得分:0)
您可以尝试将输入转换为float,并在输入无效时捕获异常:
amount_per_month = raw_input('\nWhat is the monthly cost?\n==> ')
try:
amt = float(amount_per_month)
except ValueError:
raw_input('Only enter digits 0 - 9. Press Enter to try again.')
答案 2 :(得分:0)