Python Forum

Full Version: Need help converting string to int
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I'm trying to convert strings to numbers, to multiply both numbers, when i print it out.. It still warns me its 2 strings
num = input("Enter a number to CUBE: ")

def cube():

    print(int(num * num * num))


cube()
int(num * num * num) does the operation inside the the parenthesis before converting to int. You can do this:
print((int(num)**3)
# or
num = int(num)
print(num * num * num)
(Jul-07-2021, 03:57 PM)deanhystad Wrote: [ -> ]int(num * num * num) does the operation inside the the parenthesis before converting to int. You can do this:
print((int(num)**3)
# or
num = int(num)
print(num * num * num)


Oh ok i understand. But 1 question. First try i did this i for example put 3 to cube, and it splitted them into 333333333 instead of 27, why?
num = input("Enter a number to CUBE: ")
result = int(num)


def cube():
    print(int(num * int(num) * int(num)))


cube()
You don't convert first num to integer in function.
You convert with result,but never use it.
num = input("Enter a number to CUBE: ")
result = int(num)

def cube():
    print(result * result * result)

cube()
But should not write as this function should take argument in like this,can also do convert on input().
Then it will be like this,now it clear that cube need a argument num in.
def cube(num):
    print(num * num * num)

if __name__ == '__main__':
    num = int(input("Enter a number to CUBE: "))
    cube(num)
You can multiply a string by an int. This makes the string repeat. When you multiply '3'x3 you get '3''3''3' or '333'. If you multiply that by 3 again you get '333''333''333' or '333333333'. This happens in your code because of a misplaced parenthesis.
print(int(num * int(num) * int(num)))
# should be
print(int(num) * int(num) * int(num))
As has been mentioned, the time for the conversion is before you call the function. Not only does this make the function more useful, but you only need to perform the conversion once.
Why cant i don like this?

 int(num1)
 int(num2)
 print(num1 * num2)
(Jul-07-2021, 07:59 PM)dedesssse Wrote: [ -> ]Why cant i don like this?
Not storing the integer in a variables,so line 1,2 dos nothing.
num1 = '5'
num2 = '10'
num1 = int(num1)
num2  = int(num2)
print(num1 * num2)
Output:
50
Try to understand solution that's given.
int(num) is a function that takes a string (num) and returns an integer. The function does not change the argument. For example:
string = '5'
num = int(string)
print(string, type(string), num, type(num))
Output:
5 <class 'str'> 5 <class 'int'>
string is still a str after calling int(string). It is unchanged.

This is really basic stuff. I think you would benefit from doing some online tutorials. After you learn more about functions the reason why int(num) does not convert num from a string to an int will be obvious.