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',' ']
if b=='1'or'2'
因为if条件恒成立,不会执行后面的elif分支。
这个if逻辑是
表达式1) b=='1'
或者
表达式2) '2'
表达式2是单独的,跟b没关系,所以'2'是恒成立的,所以if条件恒成立。
你的写法应该是少了b==
if b=='1'or b=='2'
if b=='1'or'2': 不对,
应该是
if b=='1' or b=='2':
因为你这个 if b=='1' or '2': 判断逻辑有问题,不是你想象的b等于'1' 或者等于'2'。
b=='1' or '2'是用 or 分隔的
b=='1'
和
'2'
两个条件表达式。
其中'2'是一个单独的条件表达式,'2'在条件判断时永远为真, or 两边是任何一边为真结果就是真。
所以b=='1' or '2'表达式的结果就是永远为真, 后面的elif条件语句也就不会执行了。
正确的写法是
if b=='1' or b=='2':
要简写可以这样子
if b in {'1','2'}:
这里用集合比用列表稍快一些。
你题目的解答代码如下:
numstr=''
numlist=[]
translate=['1','2',' ','2','1','2',' ']
for b in translate:
if b=='1' or b=='2': #修改
numstr=numstr+b
elif b==' ':
numlist.append(numstr)
numlist.append(' ')
numstr=''
print(numlist) #输出的值是[]
#想达到的结果:numlist=['12',' ','121',' ']
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!