温柔与你皆失 2022-02-03 21:36 采纳率: 100%
浏览 36
已结题

python 无论b是否等于空格,elif条件语句不触发

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
for b in translate:
        if b=='1'or'2':
            numstr=numstr+b
        elif b==' ':
            numlist.append(numstr)
            numlist.append(' ')
            numstr=''

print(numlist) #输出的值是[]

运行结果及报错内容

输出结果为[],没有报错

我的解答思路和尝试过的方法

重新翻过append(),列表的相关内容,测试后发现numstr正常输出,输出值为12 212 ,(有空格),但无论b是否等于空格,elif后的代码块都不执行

我想要达到的结果

合并字符串,中间用空格隔开,因为不让重复输入相同的符号,所以想要的结果写在下方

numstr=''
numlist=[]
translate=['1','2',' ','2','1','2',' ']
for b in translate:
        if b=='1'or'2':
              numstr=numstr+b
        elif b==' ':
              numlist.append(numstr)
              numlist.append(' ')
              numstr=''
print(numlist)   #输出的值是[]
#想达到的结果:numlist=['12',' ','121',' ']
  • 写回答

3条回答 默认 最新

  • 关注
    if b=='1'or'2'
    

    当python遇到该判别式时,优先级关系应该是这样的:

    if (b=='1') or ('2')
    

    虽然左边我们无法断定它的返回值,但是右边的'2'永远都会被看做为True
    此时表达式等效于? or True,所以整个判别式的返回值永远为True
    由于你使用了if ... elif ...结构
    如果相对来说位置靠前的条件返回值为True,那么只会执行该结构体中的代码,后面的一律不会被执行(条件也不会判断)
    因此即使表达式b==' '成立,该条件的结构体也不会被执行
    改正为

    if b=='1'or b=='2':
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月12日
  • 已采纳回答 2月4日
  • 创建了问题 2月3日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表