0

Len, number, string, what did I miss

I am a TOTAL beginner, so sorry if my question is basic. I was trying to call a function inside a function. Basically using the len() to know if a number had more than 10 digit. Did not work. So I tested each part and here is what I am not understanding. I was trying to use the Len function to know if an number had more than 1 digit. If I write : x = 90 y = 4 d = x*y*x e = "d" print(len(e)) print(d) It print : 1 and 32400. e is 'd' so the Len shoud be counting 5 elements. And if I type : x = 90 y = 4 d = x*y*x e = "32400" print(len(e)) This time e is five . What I am missing ? writing e = "d" should make e string no ? This drove me crazy for more than one hour.

8th Nov 2019, 2:37 PM
nicolas seespan
nicolas seespan - avatar
10 Antworten
+ 5
d=x*y*x #32400 e=str(d) #"32400"
8th Nov 2019, 2:48 PM
Sousou
Sousou - avatar
+ 2
x=90 y=4 d=x*y*x e=str(d) print (len(e)) You just have to the function of d to str. This will work
8th Nov 2019, 4:19 PM
Abdulhakeem Jamiu Olaniyan
Abdulhakeem Jamiu Olaniyan - avatar
+ 2
What you did for your first code was set variable 'e' to hold the value of a string, '"d"'. >>>e = "d" This told Python, when you wanted to 'print(len(e))', to display the string '"d"' length, which is 1. >>>print(len(e)) 1 Then, when you printed the variable 'd', Python printed the result of 90*4*90, which is integer 32400. >>>d = x*y*x >>>print(d) 32400 Other responses show you the right code to get your desired results: >>>e = str(d) What this line does is convert the integer value of variable 'd' into a string and assign that value to variable 'e'. When you print the length of 'e' you will get 5. >>>print(len(e)) 5
9th Nov 2019, 9:27 AM
Juju Kim
Juju Kim - avatar
+ 1
Your e variable contains just letter d. e=str(d) Makes the d variable a string.
10th Nov 2019, 11:48 AM
xpan
xpan - avatar
0
Thanks ! But why writing e = 'd' was not working ? Doing this does not transform the element in a string ? Well I know it doesn't because other wise my code would have work. I am trying to understand why e = 32400 and e = 'd' when d = 32400 are not behaving the same way with the Len() function.
8th Nov 2019, 2:45 PM
nicolas seespan
nicolas seespan - avatar
0
Thanks for all the input but the question was more on the basic why : e = 'd' give me 1 with len(), but a 5 digit number when I use print? I am just trying to understand how value behave inside the ' ' elements
9th Nov 2019, 5:16 AM
nicolas seespan
nicolas seespan - avatar
0
Thanks that's what I did not understand. I will test different variations this evening.
9th Nov 2019, 10:47 AM
nicolas seespan
nicolas seespan - avatar
0
You're welcome. It's good practice as a beginner to do some traceback. What I mean is get a piece of paper and pencil and run through your program as if you were to execute those sets of instructions yourself whenever you get an error. When you look to writing out your program, you should practice writing algorithms or a flow chart to better keep track of how you want your program to work. I hope you found this useful for future projects.
9th Nov 2019, 6:32 PM
Juju Kim
Juju Kim - avatar
0
the problem is in this part of code: e='d' the python enterpreter treat this code as e variable is assigned to d character not as d variable equal. youcan replace 'd' with str(d). so it convert d variable to string and you can see result as you can see in your second code
9th Nov 2019, 11:11 PM
Mohammad Gk
Mohammad Gk - avatar
0
Thanks for all the input. I am doing exercice now :-) One was to write a code asking for 2 values, and printing back the product of the two if it was inferior to 1000, or other wise the sum. The solution given was. def multiplication_or_sum(num1, num2): product = num1 *num2 if(product < 1000): return product else: return num1 +num2 number1 = int(input("Enter first number ")) number2 = int(input("Enter second number")) result = multiplication_or_sum(number1, number2) print("The result is", result) My solution x = int(input('first value:')) y = int(input('second value:')) if x*y <= 1000: print(" the resuls is:", x*y) else: print("the results is:", x+y) Shorter but only because looking at the given solution I realize that I could read the input directly as a number using the x = int(input('first value:')) Structure. My first iteration was asking for input then converting it to a numerical value with another line of code.
10th Nov 2019, 1:34 PM
nicolas seespan
nicolas seespan - avatar