Не могу понять, почему не работает базовый цикл в функции, которая получает строку и печатает буквы, пока первое число в строке не работает - PullRequest
0 голосов
/ 07 ноября 2019

новичок в кодировании. Я не могу понять, как работает эта строка и почему она печатает только последнюю строковую букву вместо всех.

Цель состоит в том, чтобы напечатать все буквы до первого числа в строке. если строка isdigit () == true, вернуть print ("").

Например, если я ввожу так: func ("abc"), я не могу понять, почему он печатает только "c" вместо "abc "

Спасибо!

def func (s):

for i in s:
    if i.isdigit():
        print("")
        break 
else:
    print(i)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Уровни отступов не совпадают. Ваше утверждение "else" должно быть прямо под вашим утверждением "if".

for i in s:
if i.isdigit():
    print("")
    break 
else:
    print(i)
0 голосов
/ 07 ноября 2019

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

Поскольку ваши операторы if и else существуют в разных отступах и, следовательно, в разных областях, они неоценивается в том же контексте. Исправьте отступы, чтобы правильно включить else в ту же область, что и if:

def func(s):
  for i in s:
    if i.isdigit():
        print("")
        break 
    else:
        print(i)

func('abc1d')

Возвращает:

a
b
c

Repl.it

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