我试图使用 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)
在您的乘法函数中,首先根据您的要求将输入转换为 int 或 float。
def mul(x,y):
print(int(x)*int(y))
乘法只不过是重复的加法。 在您的情况下,如果一个字符串被传递给您的函数,那么它会被“添加”很多次。
此外,如果两个输入都是字符串,那么它将引发错误。
TypeError: can't multiply sequence by non-int of type 'str'
因此,在相乘之前先转换它们是最安全的。
字符串的乘法与数字的乘法不同。
字符串乘法不会隐式转换为数字,即使字符串可以这样解释。相反,字符串被重复,由给定的整数:
>>> 'foo' * 3
'foofoofoo'
如果您的方法需要将数字相乘,请确保您只得到数字;使用int()
orfloat()
首先将字符串转换为数字。
这是因为字符串不会自动转换为整数。相反,与字符串相乘会返回一个包含多个原始字符串副本的字符串。
如果要将字符串转换为整数,则必须明确执行:
int("23")
在 Python 中,* 运算符可以对数字和序列进行操作,例如,可以将数字相乘:
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])
这是因为操作符执行的操作取决于操作数(对象),因为我们从未在 Python 中声明变量、参数或返回值的类型。
将条件、输入转换和数学放在一起