如何检查输入是否为分数(Python)?

时间:2015-04-27 12:18:54

标签: python

我在验证用户输入方面遇到了一些麻烦。对于此任务,用户必须以x / y(例如3/5)的形式输入分数,并在用户键入输入后打印。这里的问题是我不知道如何检查用户输入是否是指定的形式。

错误的输入应该是这样的:

Input a fraction then press enter: 2/3/4
That is not a valid fraction
Input a fraction then press enter: 66
That is not a valid fraction

我目前的代码是

def main():
while True:
    try:
        question = input("Input a fraction then press enter: ")
        break
    except:
        print("Please enter a valid fraction in the form x/y")
print(question)

正如您所看到的,我坚持如何验证输入。任何人都可以帮助解决这个问题

提前致谢

3 个答案:

答案 0 :(得分:4)

这是一个相对简单的验证。基本上检查只有一个'/'字符,分子和分母都是数字。

def validate(s):
    values = s.split('/')
    return len(values) == 2 and all(i.isdigit() for i in values)

例如

>>> validate('65/2')
True
>>> validate('43')
False
>>> validate('4/3/2')
False

答案 1 :(得分:2)

您可以使用Python的Fraction模块:

from fractions import Fraction

try:
    f = Fraction('22/7/3')
except (ValueError, ZeroDivisionError):
    print "That is not a valid fraction"
else:
    print "{}/{}".format(f.numerator, f.denominator)

然而,它不会捕获普通数字,因为这些可以表示为:66 = 66/1

答案 2 :(得分:1)

要涵盖大量可能的输入,请使用regex

import re

if re.match(r'^\d+/\d+$', user_input):
   # good input, do something with it
else:
   print "You did some bad input"