簡體   English   中英

如何檢查輸入是否為分數(Python)?

[英]How do I check if input is a fraction (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)

如您所見,我堅持如何驗證輸入。 有誰可以幫助解決這個問題

提前致謝

這是一個相對簡單的驗證。 基本上檢查只有一個'/'字符,分子和分母都是數字。

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

您可以使用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

要覆蓋大量可能的輸入,請使用regex

import re

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM