Python 3.6中能否用一行if语句判断输入并复用输入值?
解决Python 3.6一行式input条件判断的问题
嘿,我太懂你的困扰了!你之前的一行写法之所以失效,核心问题是每次调用input()都会触发一次新的输入——你的代码里写了两次input(),意味着用户得输入两次内容,这完全不是你想要的逻辑对吧?
下面给你两种Python 3.6兼容的解决方案,都能只获取一次输入就完成判断:
方法1:用分号分隔语句(最直观好懂)
这是最简单的一行写法,把变量赋值和打印语句用分号连起来,这样input()只会被调用一次:
words = input(); print(words if words == 'a' else 'Not a')
这里words存储了唯一的输入值,后续的条件判断和打印都基于这个值,完美匹配你的需求。
方法2:用生成器表达式技巧(无分号写法)
如果你不太喜欢用分号,可以借助生成器表达式和next()函数来实现:
print(next((w for w in [input()] if w == 'a'), 'Not a'))
原理很简单:把input()的结果放进一个单元素列表,再用生成器筛选出等于'a'的元素;next()会返回第一个符合条件的元素,如果没有匹配(也就是输入不是'a'),就返回第二个参数'Not a'。
为什么你之前的写法不行?
再拆解下你原来代码的问题:
print(input() if input() == 'a' else 'Not a')
这段代码会先执行input() == 'a'——这是第一次输入;如果条件为True,会再执行一次input()(第二次输入)并打印这个值;如果条件为False,才会直接打印'Not a'。所以要么让用户输入两次,要么打印的是第二次输入的内容,完全不符合预期。
内容的提问来源于stack exchange,提问作者baboo12345
相关产品推荐
相关产品推荐

