我尝试使用Python, 并且我创建了一个简短的方法:
def mul(x,y):
print(x*y)
通过运行
mul(2,"23")
,我得到了这个惊人的输出:2323
有人能解释一下吗?我尝试使用Python, 并且我创建了一个简短的方法:
def mul(x,y):
print(x*y)
mul(2,"23")
,我得到了这个惊人的输出:2323
有人能解释一下吗?由于你正在将一个字符串与一个整数相乘:
>>> print '23' * 2
2323
这相当于'23' + '23'
。
使用mul(2, int('23'))
将'23'
转换为整数,或者只需去掉23
周围的引号。
顺便说一句,在operator
模块中已经存在这样的函数:
operator.mul(2, 23)
def mul(x,y):
print(int(x)*int(y))
乘法就是重复加法。在你的情况下,如果一个字符串被传递到函数中,那么它将被“加”那么多次。
此外,如果两个输入都是字符串,那么它会抛出一个错误。
TypeError: can't multiply sequence by non-int of type 'str'
字符串的乘法和数字的乘法不是相同的概念。
字符串的乘法并不会将其隐式转换为数字,即使该字符串可以被解释为数字。相反,给定的整数会重复该字符串:
>>> 'foo' * 3
'foofoofoo'
int()
或 float()
将字符串转换为数字。这是因为字符串不会自动转换为整数。相反,对字符串进行乘法运算将返回一个包含原始字符串多个副本的字符串。
如果您想将字符串转换为整数,必须显式地执行此操作:
int("23")
2*3
6
2*'3' #string
'33'
[4,6]*2 #list
[4, 6, 4, 6]
(4,8)*2 #tuple
(4, 8, 4, 8)
#won't work with sets ([set type][2]) and dictionaries ([mapping type][3])
组合条件语句、输入转换和数学运算