Error parsing expression misplaced elif

Ошибка после elif Python Решение и ответ на вопрос 1518440

Маниго

0 / 0 / 0

Регистрация: 22.08.2015

Сообщений: 4

1

22.08.2015, 16:11. Показов 13745. Ответов 9

Метки нет (Все метки)


Приветствую всех, возникла вот такая проблемка, взялся поучить Python, поставил версию 3.4.3, из литературы выбрал Саммерфилд — Программирование на Python 3.2009. Все было прекрасно и понятно пока не столкнулся вот с такой проблемой:

Python
1
2
3
4
5
>>> if x:
    print("x is non zero")
    if lines < 1000:
        print("small")
        elif lines < 10000:

SyntaxError: invalid syntax

Реально не понимаю в чем проблема, все по книге, отступы автоматом ставит. Помогите советом.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

22.08.2015, 16:11

Ответы с готовыми решениями:

В чем ошибка? Ругается на elif
import math
tip=input(&quot;Введите название фигуры =&quot;)
if tip==&quot;круг&quot;:
r=float(input(&quot;Введите…

Не срабатывает elif
Здравствуйте. Такая проблема- if срабатывает не зависимо от истинности (либо выдает ошибку) и elif…

Elif в Python 3.5.2
простенькая задачка:

if pH==7.0:
print (pH,&quot;Water&quot;)
elif 7.36&lt;pH&lt;7.44:

#ifdef, #elif defined и #else
Если нужно определить ОС, на которой запускается программа, можно воспользоваться такой системой:…

9

2739 / 2342 / 620

Регистрация: 19.03.2012

Сообщений: 8,832

22.08.2015, 16:35

2

Цитата
Сообщение от Маниго
Посмотреть сообщение

отступы автоматом ставит

это это автоматом ставит отступы?

Цитата
Сообщение от Маниго
Посмотреть сообщение

все по книге

Если бы все по книге было, то все работало бы.



0



Marinero

Модератор

Эксперт NIX

2792 / 2035 / 682

Регистрация: 02.03.2015

Сообщений: 6,509

22.08.2015, 16:37

3

Ну вот если бы Вы и сами код нормально отформатировали(поместив его в теги [PYTHОN][/PYTHОN]), то и мы бы посмотрели

Python
1
2
3
4
5
if x:
    print("x is non zero")
if lines < 1000:
    print("small")
elif lines < 10000:



0



alex925

2739 / 2342 / 620

Регистрация: 19.03.2012

Сообщений: 8,832

22.08.2015, 16:38

4

Python
1
2
3
4
5
6
7
8
x = 178
lines = 1001
if x:
    print("x is non zero")
if lines < 1000:
    print("small")
elif lines < 10000:
    print('больше 1000, но меньше 10000')



0



Маниго

0 / 0 / 0

Регистрация: 22.08.2015

Сообщений: 4

22.08.2015, 16:43

 [ТС]

5

у меня он выглядит так

Python
1
2
3
4
5
if x:
    print("x is non zero")
    if lines < 1000:
        print("small")
        elif lines < 10000:



0



alex925

2739 / 2342 / 620

Регистрация: 19.03.2012

Сообщений: 8,832

22.08.2015, 16:46

6

Цитата
Сообщение от alex925
Посмотреть сообщение

это это автоматом ставит отступы?

«кто это» имелось ввиду, опписался

Цитата
Сообщение от Маниго
Посмотреть сообщение

у меня он выглядит так

Вот из-за того, что он у тебя так выглядит, ничего и не работает

Цитата
Сообщение от Маниго
Посмотреть сообщение

у меня он выглядит так

А должен так

Python
1
2
3
4
5
6
7
8
9
x = 178
lines = 1001
 
if x:
    print("x is non zero")
    if lines < 1000:
        print("small")
    elif lines < 10000:
        print('больше 1000, но меньше 10000')



0



0 / 0 / 0

Регистрация: 22.08.2015

Сообщений: 4

22.08.2015, 16:48

 [ТС]

7

Python 3.4.3 Shell
В этом редакторе



0



2739 / 2342 / 620

Регистрация: 19.03.2012

Сообщений: 8,832

22.08.2015, 16:51

8

Цитата
Сообщение от Маниго
Посмотреть сообщение

В этом редакторе

Это не редактор, а интерпретатор запущенный в интерактивном режиме

Ну, а вообще, то что ты вбиваешь код в интерактивном режиме мало, что меняет, отступы все равно тебе нужно точно также ставить. Так что смотри на то, что я тебе кинул и построчно вбивай также и все будет работать.



0



0 / 0 / 0

Регистрация: 22.08.2015

Сообщений: 4

22.08.2015, 16:54

 [ТС]

9

Сделал, через backspace, по другому не получается, все работает, Благодарю!



0



71 / 67 / 6

Регистрация: 08.08.2013

Сообщений: 286

Записей в блоге: 8

22.08.2015, 20:05

10

Скачай pycharm и радуйся жизни.



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

22.08.2015, 20:05

Помогаю со студенческими работами здесь

Python 3.2 оператор if else elif
Ввожу пример из книги саммерфилда :
x=int(input())
if x&lt;100:
print(&quot;medium&quot;)
else:…

Директивы #if, #elif, #else и #endif в C#
Добрый день, программисты.

Покажите на примерах, разъясните, как работают с директивами #if,…

Не работает оператор if/elif
Задание: написать программу для решения нелинейного уравнения методом бисекции.
Код:
a = -100.0…

Как сделать if … elif … else … ?
Хочу, чтобы по кругу выполнялся блок if else, пока не станет истинным определенное выражение, но он…

Словарь с функциями вместо elif
Всем привет!
Вообщем продолжаю изучать python, и решил для одной из практик написать бота вк (но…

elif, invalid syntax, math
import math
x = int(input(‘х = ‘))
y = int(input(‘y = ‘))
if x &gt; y:
f=((x**y)+(y**x)
elif…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

10

Operating system or device — Godot version:
Regression on 2.1.3 rc2 on rc1 it was fine

Issue description:
My scripts in 2.1.3 rc2 are not parsing properly, I have a lot of «Error parsing expression, misplaced X»
It apply to const, sometimes functions and possibly other things as well.

Steps to reproduce:

  1. Create new node, attach a script to it.
  2. Fill the script with content:
extends Node

#physic layers
const LAYER_0_ALL = 0;
const LAYER_12_HERO = 12;

static func someFunc(someParam):
    if(someParam==LAYER_0_ALL): return LAYER_12_HERO;
    if(someParam==LAYER_12_HERO): return LAYER_0_ALL;

# PRICES
const PRICE_STONE_BUY = 50;  #THIS IS LINE 12
const PRICE_STONE_SELL = 25;
const PRICE_STONE_FACTORY = 75;

  1. Observe parsing error: error (12,1): Error parsing expression, misplaced: const

Link to minimal example project:

All 11 comments

Likely related to the cherry-picking of the enum feature, cc @Faless.

Likely related to the cherry-picking of the enum feature

Nope, I encountered that error before applying that patch.
I also reverted it, the bug is still there, I’ll try a bisect to find the causing commit

So, after 7 bisection steps, I found this commit 0c650c2511a69dc8af1069546aad4ff4d989923d to be the one causing the issue @akien-mga @bojidar-bg .
The bug was not present in previous revisions

Thanks for bisecting @Faless. I’ll probably revert 0c650c2 in the 2.1 branch. The bug might also be in master then, but I’ll let @bojidar-bg check.

Ouch, sorry…

image
I can confirm it is still present on pretty-recent master. Reopening

@bojidar-bg so you could check better, another test case for you ;)

extends Sprite
var variable;

func _notification(what):
    if (what == NOTIFICATION_INSTANCED):
        pass #all internal initialization
    elif(what == NOTIFICATION_READY):
        if("resourceTypesdf"=="asd"): variable = "no new line here is a problem";

func manualInit(in3DPos, inDest2DPoint, inAmount): #HERE is an: error parsing expresion, misplaced: func 
    var someOtherCodeHere;

Ouch, would check again tomorrow.

@kubecz3k Can confirm it is fixed by my changes, other ideas?

@bojidar-bg no dont have any other ideas, thanks! :)

Was this page helpful?

0 / 5 — 0 ratings

Нуб здесь. Я не могу исправить ошибку «неуместное другое» в приведенном ниже коде. Этот код должен собирать и вычислять оценку за семестр и давать замечания в зависимости от оценки. Любая помощь приветствуется.

#include <conio.h>
#include <stdio.h>
main()
{
char name[20];
int exam, q1, q2, q3, ass, sw, att, avgq, CS, TG;
clrscr();
printf("Name: ");
gets(name);
printf("nExam: ");
scanf("%d", &exam);
printf("nQuiz #1: ");
scanf("%d", &q1);
printf("nQuiz #2: );
scanf("%d",&q2);
printf("nQuiz #3: ");
scanf("%d",&q3);
printf("nAssignment: ");
scanf("%d",&ass);
printf("nSeatwotk: ");
scanf("%d",&sw);
printf("nAttendance: ");
scanf("%d",&att);
CS=(0.4*ass)+(0.4*sw)+(0.2*att);  //class standing//
avgq=(q1+q2+q3)/3;  //average quiz//
TG=(0.4*exam)+(0.3*avgq)+(0.3*CS);  //term grade//
if(TG>=90)
printf("Term Grade: %d",TG);
printf("Remarks: EXCELLENT");
else if (TG>=80 && TG<=89)
printf("Term Grade: %d",TG);
printf("Remarks: SATISFACTORY");
else if (TG>=76 && TG<=79)
printf("Term Grade: %d",TG);
printf("Remarks: GOOD");
else if (TG==75)
printf("Term Grade: %d",TG);
printf("Remarks: PASSING");
else if (TG<74)
printf("Term Grade: %d",TG);
printf("Remarks: FAILED");
else
printf("Invalid Input.  Try again");
getch();
return 0;
}

-2

Решение

э-э-э! нуб оповещение! шучу, нам всем надо с чего-то начинать;)

так что не волнуйтесь, прекрасная дева! проблема лежит здесь:

когда вы объявляете оператор if, вы должны заключить тело оператора if в фигурные скобки. Если вы этого не сделаете, будет запущена только первая строка под оператором if. Вот пример:

// here, both do something 1 and do something 2 are being run in the if statement
if (something) {
do something 1;
do something 2;
}

// here, only do something 1 will get run inside the if statement
if (something)
do something 1;
do something 2;

Итак, вернемся к вашей проблеме. Вы должен поместите фигурные скобки {} вокруг кода в операторе if, если тело оператора if состоит из более чем 1 строки.

if (something)
do something 1;
do something 2;
else
do something 3;

эквивалентно

if (something)
do something 1;
do something 2;
else do something 3;

Вот почему вы еще оператор выдает ошибку. Каждый должен иметь перед собой if.

1

Другие решения

C ++ не использует отступы для определения концов операторов. Вам нужны фигурные скобки, если вы хотите более одного утверждения.

Вместо:

if (a)
b;
c;
else
d;

Использование:

if (a) {
b;
c;
} else {
d;
}

0

Если у вас есть более 1 строки под if или else, они должны быть заключены в фигурные скобки, например так:

if(TG>=90)
{
printf("Term Grade: %d",TG);
printf("Remarks: EXCELLENT");
}
else if (TG>=80 && TG<=89)
{
printf("Term Grade: %d",TG);
printf("Remarks: SATISFACTORY");
}

0

Понравилась статья? Поделить с друзьями:

Читайте также:

  • Error parsing error unexpected token vue
  • Error parsing error missing semicolon
  • Error parsing error cannot find module babel eslint
  • Error parsing condition with key 0 modx
  • Error parsing attribute name 1c розница

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии