python-3.x - 确定用户输入的类型的程序
问题描述
我试图制作一个程序来检查用户输入是否是数字(或者它实际上是什么类型)。我觉得我真的很接近得到它,但我不知道我在哪里弄错了。
问题实际上是程序只检测整数。除了语句之外的所有内容都被直接扔到“其他”语句中。我实际上并没有收到错误消息,只是似乎 if 和 elif 不像他们应该的那样工作并且不会捕获它们各自的输入类型。有人可以给我一个解决方案或提示吗?
num = input("please insert a number:\n")
val = type(num)
try:
val = int(num)
print("Integer", num)
except ValueError:
pass
if type(val) == float:
print("float", num)
elif type(val) == str:
print("String", num)
else:
print("something else", num)
解决方案
默认情况下,返回的类型input()
是str
。您可以创建自定义函数,在其中检查类型并相应地返回它。
例如:
def check_type(num):
try:
val = int(num)
return "Integer"
except ValueError:
pass
try:
val = float(num)
return "Float"
except ValueError:
pass
return "String"
num = input("please insert a number:\n")
print(check_type(num))
印刷:
please insert a number:
2.5
Float
推荐阅读
- bloomberg - Rblpapi:在彭博数据系列 (bds) 调用中忽略的日期
- ios - 为什么我的应用程序图标没有出现在 iphone 的一个系统功能中?
- php - 如何在带有 php 用户输入的 SQL 中使用 like 运算符?
- python - 有没有办法将 DMA 代码转换为纬度/经度?
- html - 具有列/行的响应式 Flexbox
- node.js - 'store.get' 的问题......但是其他 API 调用似乎可以正常工作
- python - 递归聚合返回语句问题
- json - SQL Server / OPENJSON / 认知服务 / LUIS
- javascript - js/数组 | Array.push 一个带有过滤器的对象到一个 forEach 循环中
- mongodb - 我可以使用其他坐标类型在 MongoDB 中创建二维索引吗?