如何用if else将input()返回的str转为int或float?
解决方案
直接通过字符串方法判断输入格式,结合if-else实现类型转换,修改后的代码如下:
mylst = [] num_str = input("Enter height: ") # 处理无小数的整数输入(厘米数) if num_str.isdecimal(): processed_num = int(num_str) mylst.append(processed_num) # 处理带小数的合法浮点数输入(英寸数) elif '.' in num_str and num_str.count('.') == 1 and num_str.split('.')[0].isdecimal() and num_str.split('.')[1].isdecimal(): processed_num = float(num_str) mylst.append(processed_num) # 非数字或非法格式输入,保留字符串类型 else: mylst.append(num_str) print(mylst)
逻辑说明
- 整数判断:用
isdecimal()验证字符串是否为纯十进制数字,符合无小数厘米数的输入要求,验证通过后转为int类型。 - 浮点数判断:通过多条件组合确保输入是合法带小数格式:
- 字符串包含且仅包含一个小数点
- 小数点前后的子串均为纯十进制数字
满足条件则转为float类型。
- 其他情况:不符合上述两种格式的输入,直接保留原字符串类型存入列表。
内容的提问来源于stack exchange,提问作者BigBad BroBot
相关产品推荐
相关产品推荐

