Я пытался использовать 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)
Это потому, что строки не автоматически преобразуются в целые числа. Вместо этого умножение на строку возвращает строку с несколькими копиями исходной строки.
Если вы хотите, чтобы преобразовать строку в целое число, вы должны сделать это явно:
int("23")
Умножение строки не одни и те же вещи, как умножение чисел.
Строка умножение делает не неявно преобразовать в число, даже если строка может быть истолкована как таковые. Вместо этого, строка повторяется, по целому числу данной:
>>> 'foo' * 3
'foofoofoo'
Если ваш метод должен умножать числа, то убедитесь, что вы получите только цифры; используйте int()
или float()
для преобразования строк в номера сначала.
В вашей функции умножения сначала преобразуйте ввод в int или float, в зависимости от вашего требования.
def mul(x,y):
print(int(x)*int(y))
Mulitplication ничего, кроме повторяющегося того. В вашем случае, если строка передается вашей функции, она становится «добавленной» много раз.
Кроме того, если оба входа являются строками, тогда он выдаст ошибку.
TypeError: can't multiply sequence by non-int of type 'str'
Так что безопаснее сначала их преобразовать, прежде чем умножать.
Оператор Python * может работать как с числами, так и последовательностями i.Е либо не умножать числа:
2*3
6
или в repeat sequences:
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.
При добавлении кода Python к вопросу, пожалуйста, будьте осторожны с форматированием и отступом. –
muliply int со строкой? шутки в сторону? –
@ JohnJohn2 да, серьезно. Я не думаю, что в этом есть что-то не так. – aIKid