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 14:13 编辑
def getval(a):
try:
a= int(a)
except:
a= float(a)
finally:
return a x = input('something:')
if x.isdigit():
x = int(x)
elif '.' in x:
if x.count('.') == 1:
x = float(x)
print(x)
print(type(x))
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)) temp= input('随便输入吧,能报错算我输!')
try:
a = int(temp)
print('你输入了一个整数!数字是%d'%a)
except:
try:
b = float(temp)
print('你输入了一个浮点数!数字是%f'%b)
except:
print('看你随便你怎么输我就是不报错!你输入的什么都不是,只能当成字符串啦:%s'%temp)
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: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() 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))
想不到怎么弄,只好跟着题目说的一路转换下去了{:10_304:}
一对比,感觉eval真强大
def new_input(prompt=""):
temp = input(prompt)
try:
return int(temp)
except ValueError:
try:
return float(temp)
except ValueError:
return temp 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)) a = input('请输入:')
try:
b = int(a)
print(b,'数字')
except:
try :
b= float(a)
print(b,'浮点')
except:
print(a,'字符') def fun143(x):
try:
return int(x)
except:
pass
try:
return float(x)
except:
return x
if __name__ == '__main__':
x = input('输入字符串:')
print(fun143(x)) 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) 感觉方法有点傻,不过也想不到别的方法了,请大神指点~{: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) temp = input('请输入值')
if temp == isInt(str):
return int(temp)
if temp == ^[-+]?*\.?+$:
return float(temp)
else:
return str(temp)
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
想不出
其他鱼友的答案带我提交后可以查看吗?
本帖最后由 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("就是字符串") 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