Python 字符串乘以数字,需要返回错误吗

Python 字符串乘以数字,需要返回错误吗,python,Python,我刚刚意识到,在python中,一个字符串乘以一个数字,只是将该字符串重复多次。我需要它返回一个错误,说明这是一个无效的操作,这样我就可以在代码中捕获它并处理一些逻辑 我尝试过使用operator.mul,但仍然会导致相同的问题 我错过了什么 编辑:我可以开始检查isinstance,但因为那是duck类型,我认为一定有更简单的方法,我只能想出一个非常愚蠢的方法: 假设你想把x和y相乘 (x//1) * (y//1) # or you can use / if you also allow fl

我刚刚意识到,在python中,一个字符串乘以一个数字,只是将该字符串重复多次。我需要它返回一个错误,说明这是一个无效的操作,这样我就可以在代码中捕获它并处理一些逻辑

我尝试过使用operator.mul,但仍然会导致相同的问题

我错过了什么


编辑:我可以开始检查isinstance,但因为那是duck类型,我认为一定有更简单的方法,我只能想出一个非常愚蠢的方法:

假设你想把x和y相乘

(x//1) * (y//1) # or you can use / if you also allow floating point numbers

当x或y是字符串时,这将引发一个错误

您没有包含任何代码,但我假设您缺少的是正确的类结构。见下文:

class MyFloat(object):
  def __init__(self, a):
    self.a = a
  def __mul__(self, other):
    if type(self.a) != type(other.a):
      raise ValueError()
    return self.a*other.a
  def __repr__(self):
    return str(self.a)

a = MyFloat("3")
b = MyFloat(3) 
print(a*b)

这将引发您预期的错误。

您试图解决的实际问题是什么?您是否正在尝试处理/验证其他人的代码?
如果isinstance(变量,str):引发错误
-这是一种更简单、更有效的方法readable@furas,我猜他不想检查variable@blhsing我试图复制Excel中某些公式的逻辑。在Excel中,一个文本乘以一个数字会产生一个错误,我也试着这样做。@pokfungChan可能不想要它,但它是一个更可读的方法。其他方法可能只会在几个月后混淆其他人和作者,因为他忘记了这个代码应该做什么。如果它能工作,这并不愚蠢!您也可以只添加0。不管怎样,你想让括号强制除法/加法在乘法之前完成。@kindall,哦,是的,你是对的!谢谢你的提醒