Python 练习41:学习讲面向对象
我正在练习41,说实话,我非常困惑。我不知道是不是因为我盯着那该死的东西看了好几个小时,是不是我的大脑被炸了,还是什么 在前面的章节中,我已经看过了下面的内容,但由于某些原因,这不是我的英语翻译Python 练习41:学习讲面向对象,python,Python,我正在练习41,说实话,我非常困惑。我不知道是不是因为我盯着那该死的东西看了好几个小时,是不是我的大脑被炸了,还是什么 在前面的章节中,我已经看过了下面的内容,但由于某些原因,这不是我的英语翻译 PHRASE_FIRST = False if len(sys.argv) == 2 and sys.argv[1] == "english": PHRASE_FIRST = True 我认为它的意思是,如果“短语优先”为假,请阅读列表,如果“短语优先”为真,请阅读英语列表?我不知道?我想是
PHRASE_FIRST = False
if len(sys.argv) == 2 and sys.argv[1] == "english":
PHRASE_FIRST = True
我认为它的意思是,如果“短语优先”为假,请阅读列表,如果“短语优先”为真,请阅读英语列表?我不知道?我想是中间路线把我搞砸了
我需要一个英语故障,让我回到正轨 否,代码将
短语_FIRST
设置为False
然后对该模型进行测试;如果该列表中有2个值,且第二个值等于字符串“english”
,则短语_FIRST
会反弹到True
sys.argv
是命令行参数列表sys.argv[0]
是脚本的名称,该列表中的任何额外元素都是在命令行中传入的字符串:
python script.py foo bar
变成
['script.py', 'foo', 'bar']
在sys.argv
中。在这种情况下,如果使用以下命令运行脚本:
python script.py english
然后将
PHRASE\u FIRST
设置为True
,否则将保持False
它所做的是将变量PHRASE\u FIRST
设置为False
,或者在特定情况下设置为True
。第一部分很简单:
PHRASE_FIRST = False
如果出现以下情况,则第二部分首先将短语重置为真:
sys.argv
是命令行参数,以程序名称开头,即exercise\u 41.py english
变成['exercise\u 41.py',english']
,并且所述第二个参数(sys.argv[1])
必须是“english”
如果不进行len
检查,则第二部分的错误将超出范围。这是使用len
的唯一原因。如果这两个都是真的
PHRASE_FIRST = True
从技术上讲,这三行可以更直接地改写为:
PHRASE_FIRST = len(sys.argv) == 2 and sys.argv[1] == "english"
但这对初学者来说有点难读谢谢!大声喊道,我已经看代码太久了。该死,你打字太快了:)出于好奇,你为什么说“反弹”而不仅仅是“设置”?@GreenAsJade:因为Python中的名称就是这样的。它们被绑定到一个值(始终是一个对象)
False
是一个对象,True
是另一个对象。这也意味着名称不再绑定到以前的值(这对引用计数有影响)。这个网站非常棒。谢谢!感谢您抽出时间回答此问题。:)我认为说“您必须向程序传递两个参数”可能会使术语混淆。事实上,你必须通过一个考试。程序名是sys.argv的第一个元素,但我不认为它是程序的参数。“diff接受多少个参数?”@user3183818。。。感谢他人努力回答问题的公认方式是向上投票。。。。对最有帮助的答案(回答了你的问题)表示感谢的公认方式是接受它(绿色勾号)。我注意到你还没有接受你之前问的问题的答案…@GreenAsJade,谢谢你的好意。编辑得更具教育性和明确性我建议编辑你的标题,包括你正在做的练习41?比如从哪本书/哪节课?它可能会帮助未来的访问者找到此页面
PHRASE_FIRST = len(sys.argv) == 2 and sys.argv[1] == "english"