Проблема с простым циклом while в python (отступ) - PullRequest
1 голос
/ 21 июня 2019
while 1 == 1:                          line(1)
    x = 1                              line(2)
    print(x)                           line(3)
        x = x + 10                     line(4)

Я начал использовать Python сегодня и узнал, что он не использует скобки {}, такие как java, чтобы закрыть цикл, но использует отступ для него.

Приведенный выше код запускается, только если яудалить строку (4).Как мне изменить код, чтобы он работал с последней строкой?Я использовал форматирование из NetBeans и до сих пор не работает.

Как работает отступ в python?Мне очень странно, что в нем не используются скобки.

Ответы [ 4 ]

2 голосов
/ 21 июня 2019

просто сравните разницу синтаксиса ниже между javascript и python.

JavaScript:

function foo() {
    for (var i=0; i<10; i++) {
        console.log(i);
    }
}

питон

def foo():
    for i in range(10):
        print i

В вашем случае

ваш код

while 1 == 1:                          
    x = 1                           
    print(x)                           
        x = x + 10  

эквивалентный код JavaScript

while(1==1){
var x=1;
console.log(x) {  
     x = x + 10 ;
     }
}

что не имеет смысла. Должно быть

while(1==1){
var x=1;
console.log(x);
x = x + 10 
}

эквивалентный код Python

while 1 == 1:                          
    x = 1                           
    print(x)                           
    x = x + 10

Я только что попытался исправить вашу проблему с отступами, но на самом деле приведенный выше код недействителен, если вы ищете приращение, потому что присваивание x = 1 находится внутри цикла, что означает, что print (x) всегда печатает 1

Исправленный код

x = 1 
while 1 == 1:
    print(x)
    x = x + 10
2 голосов
/ 21 июня 2019

Как работает отступ в python?Я нахожу очень странным, что в нем не используются квадратные скобки.

Думайте как { = отступ, } = отступ, но вы не можете иметь случайные блоки «только потому что» - каждыйтакой блок нуждается в управляющей структуре для его внедрения.Таким образом, ваш код был бы написан следующим образом на грубом языке:

while (1 == 1) {
    x = 1
    print(x)
    ???? {
        x = x + 10
    }
}

Блок x = x + 10 не соответствует какой-либо структуре управления и поэтому не должен иметь отступ больше print(x).

1 голос
/ 21 июня 2019

python не использует скобки для объявления области видимости.вместо этого он использует вкладки.вам просто нужно поместить свои заявления в той же вкладке.

правильный код:

while 1 == 1:
    x = 1
    print(x)
    x = x + 10
1 голос
/ 21 июня 2019
while 1 == 1:                          line(1)
    x = 1                              line(2)
    print(x)                           line(3)
    x = x + 10                         line(4)

Эквивалент Java ->

while (1 == 1)                         
{
    x = 1                              
    System.out.println(x)                
    x = x + 10                         
}

Все отступы на том же отступе обрабатываются как скобки в Java. Отступы очень важны в Python по сравнению с Java, где у вас могут быть разные строки кода с разными отступами.

...