Неверный синтаксис при использовании оператора else - PullRequest
1 голос
/ 20 октября 2019

Я был бы очень признателен, если бы кто-нибудь мог объяснить, почему я получаю синтаксическую ошибку для строки с оператором else.

x = 0
digits = 0

while(x != 0):
  x = x // 10
  digits += 1
print(digits)

else(x == 0):
  print(1)

Мне нужно создать код, который использует цикл while и условный операторв котором он оценивает количество цифр, которое содержит целое число. Цикл else необходим в противном случае, если у меня есть x = 0, он выведет 0 как no. цифр, что, конечно, неверно.

Ответы [ 2 ]

0 голосов
/ 20 октября 2019

Мы хотим узнать, x == 0 сначала , и обработать этот случай специально. Когда это , а не , , это , когда мы используем цикл while, поэтому сделайте отступ всего этого внутри else. Таким образом:

if x == 0:
    print(1)
else:
    while(x != 0):
        x = x // 10
        digits += 1
    print(digits)
0 голосов
/ 20 октября 2019
x = 10000
digits = 0

while x != 0:
    x = x // 10
    digits += 1
    if x == 0:         # you only want to print once when you have digits correct so check here
        print(digits)  # print your digits
        break          # break your loop
else:   # remove the expression here for the else (not elif)
    print(1)

Похоже:

>>> x = 10000
>>> digits = 0
>>> 
>>> while x != 0:
...     x = x // 10
...     digits += 1
...     if x == 0:
...         print(digits)
...         break
... else:
...     print(1)
... 
5

Редактировать:

Как отметил Карл в комментариях, это не обычный способ сделать что-то в Python. Этот ответ таков, потому что казалось, что вы специально хотели использовать while/else, что и является способом сделать это. Реорганизация его так, как он это делает в своем ответе, встречается гораздо чаще, но не удовлетворяет требованиям делать while/else, если это требование для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...