You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一行代码获取整数与字符串两种不同类型的用户输入?

问题解决

原代码问题分析

你用and连接两个提示字符串的写法是错误的。在Python中,对非空字符串使用and会触发布尔逻辑求值——非空字符串都是True,所以'Enter a number 1-10: ' and 'odd or even?'最终会返回第二个字符串,这就是为什么只显示第二个提示。要合并提示文本,直接把两个字符串拼接即可。

一行代码实现方案

以下两种写法都能满足你的需求:

方案1(可读性优先)

用分号分隔语句,先获取输入并拆分,再分别转换类型:

x, y = input('Enter a number 1-10: odd or even?').split(); num, guess = int(x), y

用户输入格式示例:3 odd,执行后num是整数3,guess是字符串'odd'。

方案2(纯一行表达式)

用lambda函数一次性完成输入拆分和类型转换:

num, guess = (lambda x, y: (int(x), y))(*input('Enter a number 1-10: odd or even?').split())

效果和方案1完全一致,只是写法更紧凑。

可选:添加输入范围校验

如果需要确保输入的数字在1-10之间,可以在一行里加入简单校验(不符合时抛出异常):

num, guess = (lambda x, y: (int(x) if 1 <= int(x) <= 10 else ValueError('Number must be between 1 and 10'), y))(*input('Enter a number 1-10: odd or even?').split())

不过这种写法可读性较差,实际场景更建议拆分多行处理校验逻辑。

内容的提问来源于stack exchange,提问作者Jack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:15:49