Программа Python не должна вычислять длину с плавающей точкой, только строку - PullRequest
0 голосов
/ 07 сентября 2018

Я создаю функцию в Python для вычисления длины строки, в то же время давая пользователю знать, что Int и float не являются строкой.Раздел Int работает, однако функция не поддерживает float, и я не знаю почему.

Я использую Visual Studio Code в Windows 10. Python 3.7.0 [MSC v.1914 64 бит (AMD64)] на win32

def length_string(mystring):
  try:
    if type(int(mystring)) == int:
       return f"Hello, this is not {mystring} a string"
    elif type(mystring) == float:
       return f"Hello, this is not {mystring} a string"
    elif type(str(mystring)) == str:
       return len(mystring)
  except:
    return len(mystring)

string_name = input ("Пожалуйста, введите ваше значение:") print (length_string (string_name)) `

Result String Hello is: 5 Result Int 555 = Hello,это не 555 строка Результат Float 555.0 = 5, но должно совпадать с int.

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

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

def length_string(mystring):
     if isinstance(mystring, basestring):
          return len(mystring);
     else:
          return f"Hello, {mystring} is not a string";
0 голосов
/ 07 сентября 2018

Если преобразование строки int(mystring) завершается успешно, типом всегда является строка, в противном случае выполняется execpt -блок, поэтому два elif -блока никогда не выполняются.

def length_string(mystring):
    try:
        float(mystring)
    except ValueError:
        return f"Hello, this is not {mystring} a string"
    return len(mystring)
...