冬雪雪冬 发表于 2018-1-18 10:51:24

Python:每日一题 143

本帖最后由 冬雪雪冬 于 2018-2-5 20:38 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考”,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
我们知道input返回的值都是字符串,现在要求如果可以转换为整数则用int转为整数,如'2', '-3',如果是浮点数则用float转为浮点数,如'12.34', '-3.2E5',如果不能转换则保留为字符串。
注不要用eval函数。

弟大勿波 发表于 2018-1-18 11:17:26

本帖最后由 弟大勿波 于 2018-1-18 14:13 编辑

def getval(a):
    try:
      a= int(a)
    except:
      a= float(a)
    finally:
      return a

大头目 发表于 2018-1-18 13:50:36

x = input('something:')
if x.isdigit():
        x = int(x)
elif '.' in x:
        if x.count('.') == 1:
                x = float(x)

print(x)
print(type(x))

Jons 发表于 2018-1-18 14:00:03

num = input("要检查的字符:")
lists = num.split('.')
#计算长度
lenct = len(lists)

if lenct == 2:
    #计算的两个是否是整型标识
    l = 0;
    for i,n in enumerate(lists):
      if n.isnumeric():
            l = l+1;
    if l == 2:
      print('字符是浮点型 %s' % float(num))
    else:
      print('字符是字符串类型: %s' % str(num))
elif lenct == 1:
    if num.lstrip('-').isdigit():

      print('字符是整型: %s' % int(num))
    else:
      print('字符是字符串类型: %s' % str(num))
else:
    print('字符是字符串类型: %s' % str(num))

天圆突破 发表于 2018-1-18 14:02:42

temp= input('随便输入吧,能报错算我输!')
try:
        a = int(temp)
        print('你输入了一个整数!数字是%d'%a)
except:
        try:
                b = float(temp)
                print('你输入了一个浮点数!数字是%f'%b)
        except:
                print('看你随便你怎么输我就是不报错!你输入的什么都不是,只能当成字符串啦:%s'%temp)

h20060304 发表于 2018-1-18 14:22:58

a = '1235'


try:
    b = int(a)
except ValueError:
    try:
      b= float(a)
    except ValueError:
      b = a
finally:
    print b

shigure_takimi 发表于 2018-1-18 15:33:05

本帖最后由 shigure_takimi 于 2018-1-18 15:36 编辑

#第一感用正则,但是还没学,只能一层一层的if.
#经验证可行。不过没有考虑到e大写(用lower()应该就可以了),及+(正号)的情况(需要再多几个if)。


def isInt(a):
    if a.isnumeric() or (a == '-' and a.isnumeric()):
      return True

def isFloat(a):
    if a != '-':
      if a.replace('e','').replace('.','').replace('-', '').isnumeric():
            if a.count('.') == 1:
                if a.count('e') == 0:
                  return True
                elif a.count('e') == 1:
                  if a[-1] == 'e':
                        return False
                  else:
                        index_e = a.index('e')
                        if isFloat(a[:index_e]) and isInt(a):
                            return True
            elif a.count('.') == 0:
                if a.count('e') == 1:
                  if a[-1] == 'e':
                        return False
                  else:
                        return True
    else:
      return isFloat(a)
                  
def changeType():
    a = input('请输入一个字符串:').strip()
    if a == '':
      a = input('请输入一个字符串:')
    elif isInt(a):
      a = int(a)
    elif isFloat(a):
      a = float(a)
    print('字符串转换后Type为:{0}, 值为:{1}'.format(type(a), a))

for i in range(15):
    print(i, '-->', end = ' ')
    changeType()

wojiaodabai 发表于 2018-1-18 17:18:56

obj=input('Please input object:')

if isinstance(obj,int)==True:
   print( int(obj))
elif isinstance(obj,float)==True:
    print( float(obj))
else:
    print( str(obj))


solomonxian 发表于 2018-1-18 18:40:06

想不到怎么弄,只好跟着题目说的一路转换下去了{:10_304:}
一对比,感觉eval真强大
def new_input(prompt=""):
    temp = input(prompt)
    try:
      return int(temp)
    except ValueError:
      try:
            return float(temp)
      except ValueError:
            return temp

yjsx86 发表于 2018-1-19 05:19:35

def isfloat(string):
    try:
      float(string)
      return True
    except ValueError:
      return False

def iscomplex(string):
    try:
      complex(string)
      return True
    except ValueError:
      return False

def convert_string(string):
    if string.isdigit():
      return int(string)
    elif isfloat(string):
      return float(string)
    elif iscomplex(string):
      return complex(string)
    else:
      return string

if __name__ == '__main__':
    string = convert_string(input('>>> '))
    print(type(string))

luokaoge 发表于 2018-1-19 08:56:42

a = input('请输入:')
try:
    b = int(a)
    print(b,'数字')
except:
    try :
      b= float(a)
      print(b,'浮点')
    except:
      print(a,'字符')

776667 发表于 2018-1-19 09:10:57

def fun143(x):
    try:
      return int(x)
    except:
      pass
    try:
      return float(x)
    except:
      return x

if __name__ == '__main__':
    x = input('输入字符串:')
    print(fun143(x))

haixiaotian 发表于 2018-1-19 10:10:15

num_input = input('请输入任意字符:')
try:
        int(num_input)
        print('整数字符转换为整数:%d'%int(num_input))
except ValueError as reason:
        try:
                float(num_input)
                print('浮点数字符转换为浮点数:%f'%float(num_input))
        except ValueError as reason:
                print('不能转化保留为字符串:%s'%num_input)

graceasyi 发表于 2018-1-19 10:47:33

感觉方法有点傻,不过也想不到别的方法了,请大神指点~{:7_112:}

def input1(msg):
    s1 = input(msg)
    try:
      i1 = int(s1)
      return i1
    except ValueError:
      try:
            f1 = float(s1)
            return f1
      except ValueError:
            return s1


a = input1("请输入:")
print(a)

tzfcc 发表于 2018-1-19 14:09:19

temp = input('请输入值')

if temp == isInt(str):
    return int(temp)
if temp == ^[-+]?*\.?+$:
    return float(temp)
else:
      return str(temp)

久疤K 发表于 2018-1-19 18:52:09

def fun( string ):
    try:
      return int(string)
    except:
      try:
            return float(string)
      except:
            return string

def main():
    s = input('请输入一个字符串: ')
    res = fun( s )
    print('res = ',res, ',', type(res).__name__ )

if __name__ == "__main__":
    main()

结果:
==================== RESTART: H:\Desktop\Game\Game143.py ====================
请输入一个字符串: 123
res =123 , int
>>>
==================== RESTART: H:\Desktop\Game\Game143.py ====================
请输入一个字符串: 3e-2
res =0.03 , float
>>>
==================== RESTART: H:\Desktop\Game\Game143.py ====================
请输入一个字符串: jack
res =jack , str

1141429506 发表于 2018-1-23 15:34:24

想不出

1141429506 发表于 2018-1-23 16:06:29

其他鱼友的答案带我提交后可以查看吗?

mike0724 发表于 2018-1-23 17:39:13

本帖最后由 mike0724 于 2018-1-23 17:58 编辑

my_input=input("请输入:")
try:
      my_input = int(my_input)
      print("可以转换int")
except:
      try:
                my_input = float(my_input)
                print("可以转换float")
      except:
                print("就是字符串")

wyp02033 发表于 2018-1-24 22:23:21

def myinput():
    data = input('请输入:')
    try:
      new_data = int(data)

    except ValueError:
      try:
            new_data = float(data)
      except ValueError:
            return data
    return new_data
页: [1] 2
查看完整版本: Python:每日一题 143