[英]How do I take a fraction as an input in Python, and use the fraction's value for arithmetic?
[英]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.