Python:'不能分配给运营商'语法错误

时间:2015-10-10 13:14:34

标签: python arrays syntax-error assign

我试图编写一个程序,在列表中收集测试分数,然后输出某些因素,如最高分数。但是,当我尝试分配intH1(测试1的最高结果)时,我得到上述错误。该行为etc

intH1 = score1_list[intCount] and strHN1 = name_list[intCount]

2 个答案:

答案 0 :(得分:3)

您无法使用and分配两个变量。 Python将您的作业解析为:

intH1 = (score1_list[intCount] and strHN1) = name_list[intCount]

尝试将name_list[intCount]表达式的结果分配给intH1score1_list[intCount] and strHN1and是一个运算符,只能在表达式中使用,但赋值是语句。语句可以包含表达式,表达式不能包含语句。

这就是为什么defined grammar for assignments使用语法实体* expression_list and yield_expression , two expression forms you can use, only in the part to the right of the =`等号:

assignment_stmt ::=  (target_list "=")+ (expression_list | yield_expression)

虽然target_list定义不允许使用任意表达式。

使用单独的行进行分配:

intH1 = score1_list[intCount]
strHN1 = name_list[intCount]

或使用元组赋值:

intH1, strHN1 = score1_list[intCount], name_list[intCount]

答案 1 :(得分:1)

if的每个分支执行两项任务。你之间不需要and,你只需将它们分成两个陈述:

if score1_list[intCount] > intH1:
    intH1 = score1_list[intCount]
    strHN1 = name_list[intCount]
if score2_list[intCount] > intH2:
    intH2 = score2_list[intCount]
    strHN2 = name_list[intCount]
if score3_list[intCount] > intH3:
    intH3 = score3_list[intCount]
    strHN3 = name_list[intCount]
if total_list[intCount] > intHT:
    intHT = total_list[intCount]
    strHNT = name_list[intCount]