Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit05e9110

Browse files
committed
+ a quick fix
1 parentd6b0083 commit05e9110

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

‎Lib/fractions.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -247,31 +247,42 @@ def __new__(cls, numerator=0, denominator=None):
247247
if_andnotexp:
248248
raiseValueError
249249
num,_,decimal=num.partition('.')
250-
ifdecimal:
251-
ifnumandnum[0]in ('+','-'):
250+
ifnum:
251+
ifnum[0]in ('+','-'):
252252
sign=num[0]=='-'
253253
num=num[1:]
254254
else:
255255
sign=0
256+
ifnumandnot (num[-1].isdigit()andnum[0].isdigit()):
257+
raiseValueError
258+
else:
259+
sign=0
260+
ifdecimal:
261+
ifnotdecimal[0].isdigit()ornotdecimal[-1].isdigit():
262+
raiseValueError
256263
numerator=int(numor'0')
257264
decimal_len=len(decimal.replace('_',''))
258265
decimal=int(decimal)
259266
scale=10**decimal_len
260267
numerator=numerator*scale+decimal
261268
denominator*=scale
262-
ifsign:
263-
numerator=-numerator
264269
else:
265270
numerator=int(num)
271+
ifsign:
272+
numerator=-numerator
266273
ifexp:
274+
ifnot (exp[0]in ('+','-')orexp[0].isdigit()):
275+
raiseValueError
267276
exp=int(exp)
268277
ifexp>=0:
269278
numerator*=10**exp
270279
else:
271280
denominator*=10**-exp
272281
else:
273282
raiseValueError
274-
exceptValueError:
283+
exceptValueErrorasexc:
284+
ifexc.argsandre.match('^Exceeds',exc.args[0]):
285+
raise
275286
raiseValueError('Invalid literal for Fraction: %r'%
276287
fraction_literal)
277288

‎Lib/test/test_fractions.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,7 @@ def check_invalid(s):
434434
# Imitate float's parsing.
435435
check_invalid("+ 3/2")
436436
check_invalid("- 3/2")
437+
check_invalid("+ 343.33")
437438
# Avoid treating '.' as a regex special character.
438439
check_invalid("3a2")
439440
# Don't accept combinations of decimals and rationals.

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp