Python Modulus Giving String Formatting Errors

后端 未结 2 475
别跟我提以往
别跟我提以往 2021-01-18 13:02

I\'m trying to perform the modulus of a value in python, but I\'m getting errors as it\'s interpretting the modulus as a string formatting constant, from my knowledge. My in

相关标签:
2条回答
  • 2021-01-18 13:14

    If yu are getting this error, y1 itself is a string. You can't perform numeric calculations with strings - when you do "int(y1) " - it is not casting, it is converting the number represented by characters inside the string o an actual numeric value - and that is the only way you can perform numeric operations on it.

    If it is takin thta log, it is probable because you are trying convert "y1 * val" to int - which is wrong already - if y1 is a string, "y1 * val" gives you y1 concatenated to itself "val" times - so it would be a really huge number. You need to have the value i n "y1" as a number before multiplying - as in:

    val  = int(y1) * val
    
    0 讨论(0)
  • 2021-01-18 13:22

    As you can see from this code, the % operator has different meanings with strings than with numbers.

    >>> 1 % 2
    1
    >>> '1' % 2
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: not all arguments converted during string formatting
    

    My guess is that y1 is actually a string. Here's the difference the type of y1 makes:

    >>> val = 10
    >>> y1 = '2'
    >>> val * y1
    '2222222222'
    >>> y1 = 2
    >>> val * y1
    20
    
    0 讨论(0)
提交回复
热议问题