Python трактует + как цифру?

По сути, я делаю небольшой кусок кода, чтобы удалить символ конца строки, пока строка не пройдет .isdigit,

def string_conversion(string):
    for i in string:
        if i.isdigit == False:
            string = string[0:len[string]-1]
            print(string) #This is just here to see if it goes through
test = "60+" 
string_conversion(test)

Я использовал http://www.pythontutor.com/visualize.html чтобы понять, почему я не получил никаких выходных данных, он прошел символ + в виде цифры, точно так же, как цифры 6 и 0.

Я делаю что-то не так или Python лечит + как цифра?

2 ответа

Решение

str.isdigit это метод, а не атрибут, поэтому (как уже упоминалось в комментариях) его нужно вызывать.

Также вы проверяете каждый символ (начиная с левой стороны) для isdigit но если он не проходит isdigit() проверить вы удалите символ с правой стороны. Это не кажется правильным. Вы, вероятно, хотели перебрать for i in reversed(string) (или используя нарезку: for i in string[::-1]).

Но вы также можете упростить логику, используя while цикл:

def string_conversion(string):
    while string and not string.isdigit():
        string = string[:-1]
    return string
def string_conversion(string):
    for i, s in enumerate(string):
        if s.isdigit() == False:
            string = string[:i]
            break
    print(string) #This is just here to see if it goes through

test = "60+"
string_conversion(test)

Попробуй это

Другие вопросы по тегам