给出输入窗口使用户输入分数
>>> from fractions import Fraction
>>> a = Fraction(input('enter a fraction'))
enter a fraction7/65
>>> a
Fraction(7, 65)
>>> a = Fraction(input('enter a fraction:'))
SyntaxError: unexpected indent
>>> a = Fraction(input('enter a fraction:'))
enter a fraction:7/412
>>> a
Fraction(7, 412)
>>> b = Fraction(input('enter a fraction:'))
enter a fraction:3/0
Traceback (most recent call last):
File "<pyshell#8>", line 1, in <module>
b = Fraction(input('enter a fraction:'))
File "C:\Users\hongxiao.wang\AppData\Local\Programs\Python\Python38-32\lib\fractions.py", line 178, in __new__
raise ZeroDivisionError('Fraction(%s, 0)' % numerator)
ZeroDivisionError: Fraction(3, 0)
可以看待,因为在分数中是不存在以0为分母的分数的,所以此时Python会报错,给出一个ZeroDivisionError的异常信息,为了避免用户输入此类无效分数,我们可以设置一个捕获异常来处理:
>>> try:
a= Fraction(input('enter a fraction:'))
except ZeroDivisionError:
print('Invalid fraction')
enter a fraction:3/0
Invalid fraction
此时,如果用户输入了无效的分数,输出结果则会弹出Invalid fraction作为给用户的提示。 给出输入窗口使用户输入复数
>>> z = complex(input('enter a complex:'))
enter a complex:2+5j
>>> z
(2+5j)
>>> z = complex(input('enter a complex:'))
enter a complex:2+ 5j
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
z = complex(input('enter a complex:'))
ValueError: complex() arg is a malformed string
>>> try:
z = complex(input('enter a complex:'))
except ValueError:
print('Invalid complex')
enter a complex:3+ 6i
Invalid complex
此时,用户输入了无效的复数,最终捕获到ValueError异常,就像我们对其他数字类型所做的一样。我们还是可以提前设置一个异常捕获,使得用户输入无效类型数字时输出给用户提示。
|