【问题标题】:check the user input type using python and streamlit使用 python 和 streamlit 检查用户输入类型
【发布时间】:2021-12-09 08:44:26
【问题描述】:

我想检查用户输入是数字还是字符串。

问题在于 if 语句总是将用户输入作为字符串,即使输入是数字,默认情况下它会转换为字符串。

如何解决这个问题?

all_columns = df.columns.tolist()
st_input_update = st.number_input if is_numeric_dtype(all_columns) else st.text_input
with col1_search:
    regular_search_term=st_input_update("Enter Search Term")

【问题讨论】:

  • 你试过int(st_input_update("Enter Search Term"))吗?
  • df.columns.tolist() 返回一个列表,是吗?那么,为什么is_numeric_dtype 应该是一个列表呢?也许您想检查列表中的所有元素是否都是数字?
  • 我认为我的逻辑是错误的,因为我想要检查用户输入是数字还是字符串
  • 然后您可以使用st.text_input 并尝试排除ValueError,如下面的答案所示。
  • @OneCricketeer 我试过没用

标签: python if-statement streamlit


【解决方案1】:

is_numeric_dtype() 的参数应该是类型或 pandas 数组。你给了它一个列名列表,但两者都不是。

使用df.dtypes 获取数据类型数组。

st_input_update = st.number_input if is_numeric_dtype(df.dtypes) else st.text_input

【讨论】:

    【解决方案2】:
    user_input = input("Enter something:")
    try:
        x = int(user_input)
        print("Is a number")
    except ValueError:
        print("That's not an int!")
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • type(int(user_input)) == int 永远为真。
    • 您是否阅读了问题,或者只是阅读了标题?是测试all_columns中所有数据的类型是否为int,而不是用户输入。
    • @Barmar 我想检查用户输入是否是 int 或不是所有数据都抱歉误导
    猜你喜欢
    • 1970-01-01
    • 2021-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    相关资源
    最近更新 更多