Discuss / Python / 考虑多种输入方式,妈妈说太难了

考虑多种输入方式,妈妈说太难了

Topic source

SunSapphire

#1 Created at ... [Delete] [Delete and Lock User]

-- coding:utf-8 --

from functools import reduce def pretrans(str): try: [str1,str2]=str.split('.') return [str1,str2] except ValueError as e: return [str,'']

def str2float(str): if str==None or str=='' or str=='.' or str=='+.' or str=='-.' or str=='-' or str=='+': return None [str1,str2]=pretrans(str) if str1=='' or str1=='+': sign=1 return signreduce(lambda x, y: x10 + y,list(map(char2num, str2)))pow(10,-len(str2)) elif str1=='-': sign=-1 return signreduce(lambda x, y: x10 + y,list(map(char2num, str2)))pow(10,-len(str2)) if str2=='': if str1[0]=='+': sign=1 return signreduce(lambda x, y: x 10 + y, list(map(char2num, str1[1:]))) elif str1[0]=='-': sign=-1 return signreduce(lambda x, y: x 10 + y, list(map(char2num, str1[1:]))) else: if str1[0]=='+': return reduce(lambda x, y: x 10 + y, list(map(char2num, str1[1:])))+reduce(lambda x, y: x10 + y,list(map(char2num, str2)))pow(10,-len(str2)) elif str1[0]=='-': return -1reduce(lambda x, y: x 10 + y, list(map(char2num, str1[1:])))-reduce(lambda x, y: x10 + y,list(map(char2num, str2)))pow(10,-len(str2)) else: return reduce(lambda x, y: x 10 + y, list(map(char2num, str1)))+reduce(lambda x, y: x10 + y,list(map(char2num, str2)))pow(10,-len(str2))

def char2num(x): return { '0':0, '1':1, '2':2, '3':3, '4':4, '5':5, '6':6, '7':7, '8':8, '9':9 }[x]

print('-1.245:') print(str2float('-1.245')) print('\n') print('-:') print(str2float('-')) print('\n') print('-.:') print(str2float('-.')) print('\n') print('+.:') print(str2float('+.')) print('\n') print('.:') print(str2float('.')) print('\n') print('-1.:') print(str2float('-1.')) print('\n') print('+222.:') print(str2float('+222.')) print('\n') print('-.1234:') print(str2float('-.1234')) print('\n') print('+.2345:') print(str2float('+.2345')) print('\n') print('+123.345:') print(str2float('+123.345')) print('\n') print('-123.789:') print(str2float('-123.789')) print('\n') print('521.125:') print(str2float('521.125')) print('\n')

问题v青年

#2 Created at ... [Delete] [Delete and Lock User]

厉害了


  • 1

Reply