Я новичок в python и мне интересно, есть ли более эффективные способы решения этой домашней задачи:
Напишите функцию mytype (v), которая выполняет то же действие, что и type (), и может распознатьцелые числа, числа с плавающей запятой, строки и списки.Сделайте это, используя сначала str (v), а затем читая строку.Предположим, что списки могут содержать только числа (не строки, другие списки и т. Д.), И предположим, что строки могут быть чем угодно, кроме целых чисел, чисел с плавающей точкой или списка.
Проблема требует использования регулярных выражений.Вот то, что я имею до сих пор, и это работает, насколько мне известно.Мне интересно, существуют ли способы сделать это БЕЗ так много утверждений if?то есть более кратким или более эффективным?
import re
def mytype(v):
s = str(v)
# Check if list
list_regex = re.compile(r'[\[\]]')
l = re.findall(list_regex, s)
if l:
return "<type 'list'>"
# Check if float
float_regex = re.compile(r'[0-9]+\.')
f = re.findall(float_regex, s)
if f:
return "<type 'float'>"
# Check if int
int_regex = re.compile(r'[0-9]+')
i = re.findall(int_regex, s)
if i:
return "<type 'int'>"
# Check if string
str_regex = re.compile(r'[a-zA-Z]+')
t = re.findall(str_regex, s)
if t:
return "<type 'string'>"
x = 5
y = 5.5
z= .99
string = "hsjjsRHJSK"
li = [1.1,2,3.2,4,5]
print mytype(x) # <type 'int'>
print mytype(y) # <type 'float'>
print mytype(z) # <type 'float'>
print mytype(string) # <type 'string'>
print mytype(li) # <type 'list'>