Thomas Passin 在 2023年1月22日 星期日下午1:30:39 [UTC+8] 的信中寫道: > On 1/21/2023 10:11 PM, Jach Feng wrote: > > Fail on command line, > > > > e:\Works\Python>py infix2postfix.py "-4^2+5.3*abs(-2-1)/2" > > usage: infix2postfix.py [-h] [infix] > > infix2postfix.py: error: unrecognized arguments: -4^2+5.3*abs(-2-1)/2 > > > > Also fail in REPL, > > > > e:\Works\Python>py > > Python 3.8.8 (tags/v3.8.8:024d805, Feb 19 2021, 13:08:11) [MSC v.1928 32 > > bit (Intel)] on win32 > > Type "help", "copyright", "credits" or "license" for more information. > >>>> import argparse > >>>> parser = argparse.ArgumentParser(description='Convert infix notation to > >>>> postfix') > >>>> parser.parse_args("-4^2+5.3*abs(-2-1)/2") > > usage: [-h] > > : error: unrecognized arguments: - 4 ^ 2 + 5 . 3 * a b s ( - 2 - 1 ) / 2 > > > > Just can't figure out where is wrong!? > It just doesn't work like that. If you download the package, there is > only one python file, __init__.py. This file contains one class. It > has a demo at the end, commented out. If you uncomment those lines and > run the file, you get a result printed. > > These remarks are based on downloading the link for the source > distribution from Pypi > (https://pypi.org/project/infix2postfix/). When I installed it with > pip, nothing seems to have gotten installed although pip went through > the motions and claimed it was. So I just downloaded the source package. > > The test expression is "-(a*b)+(c+d)-(a+b+c+d)". The test output for > this is "ab*-cd++ab+c+d+-". > > If you substitute your expression, the result is > > abs1-2-*2/3.5+2^4- > > This may or may not be correct. I'm not sure but I think it's as > intended except for reversing "3.5". But maybe that's right, I'm not > too sure. Notice that this file is in its first release, version 0.0.1 > - the metadata that says it's 'Development Status :: 5 - > Production/Stable' seems to be bogus. So it may very well be buggy. > > At any rate, if you want to use it in a program that can accept > arguments, you will have to write that part yourself. And the > expression you feed it would need to be a single string, meaning it has > to be quoted on the command line as you have done (although on Windows > you should be using double quotes instead of single quotes). > > As for argparse, it isn't doing what you want because you haven't told > it what to do with the arguments. Sorry to cause confusion here. I don't know there is a Pypi project with the same name infix2postfix.py:-(
Nevertheless, Is there anyway to make parse_args works? >>> parser.parse_args("-4^2+5.3*abs(-2-1)/2") -- https://mail.python.org/mailman/listinfo/python-list