为了账号安全,请及时绑定邮箱和手机立即绑定

m*100+n*10+m的问题

为什么例子中的代码就不用乘10位,我把ABC改为123 ,显示结果也是正常,那为什么题上的代码就要乘4呢?是因为range的原因吗?请大佬指点。

正在回答

2 回答

对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

这个列表中的元素是字符串, 字符串通过相加,即如print 'a' + '1', 结果为a1; 同样,printf 'a'

 + '1' + '2' , 结果为a12


百位的循环从 1-9,十位和个位的循环从 0-9。

参考代码:

print [100 * n1 + 10 * n2 + n3 for n1 in range(1, 10) for n2 in range(10) for n3 in range(10) if n1==n3]

而题目列表中的元素是整数,对于数值来说,不存在这种用法。


对于你说的将例子中ABC改为123,虽然打印出来可以得出相同结果,但实际上你无法将字符串进行算术运算,编译器会报错。



1 回复 有任何疑惑可以回复我~
#1

慕少8052535 提问者

非常感谢!
2018-07-31 回复 有任何疑惑可以回复我~

简单的说就是一个是数值,一个是字符。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758625    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

m*100+n*10+m的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信