Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Python don't divide
#1



Hello!!

I am coding what should be an easy program, to calculate few things. But, unfortunately, the things are not going as I planned.

This is my code:

[python]
seq_T4 ='MILKI...FEDVFGDFHEVTGL'

y = 0
w = 0
f = 0
num_aa = 0

for aa in seq_T4.lower():
num_aa += 1
if aa == 'y':
y += 1
elif aa == 'w':
w += 1
elif aa == 'f':
f += 1

aa_fluo = y + w + f
ratio = format((aa_fluo / num_aa),'.5f')

print ('the protein as', num_aa, 'aa, and therefore MW of roughly kDa', (num_aa*650)/1000)
print ('the number or Tyrosine is:', y)
print ('the number or Tryptophan is:', w)
print ('the number or Phenylalanine is:', f)
print ('the Fluorescent aa / total aa is % ', ratio)
[/pyhton]

output:

('the protein as', 487, 'aa, and therefore MW of roughly kDa', 316)
('the number or Tyrosine is:', 20)
('the number or Tryptophan is:', 5)
('the number or Phenylalanine is:', 18)
('the Fluorescent aa / total aa is % ', '0.00000')

The problem is that the ratio doesn't give the expected number. It look like Python does not know how to divide. I have tried to do the division in the shell and it work properly, but when I ask to do it in this code doesn't work.

I am running this version of Ipython :
Python 2.7.12 (default, Nov 20 2017, 18:23:56)
Type "copyright", "credits" or "license" for more information.

IPython 2.4.1 -- An enhanced Interactive Python.

It is running on Ubuntu bash shell for windows 10

Thank you
Reply
#2
Please edit your post so that Python code, errors and outputs are put within proper tags. And when copying code, use ctrl+shift+v to preserve indentation. You can find help here.
Reply
#3
Print out the numerator and denominator and make sure that's correct. I almost guarantee that's your problem
Reply
#4
Sorry, I am going to copu and paste the post with the tags

Hello!!

I am coding what should be an easy program, to calculate few things. But, unfortunately, the things are not going as I planned.

This is my code:

seq_T4 ='MILKILNEIASIGSTKQK....NTFEDVFGDFHEVTGL'

y = 0
w = 0
f = 0
num_aa = 0

for aa in seq_T4.lower():
    num_aa += 1
    if aa == 'y':
        y += 1
    elif aa == 'w':
        w += 1
    elif aa == 'f':
        f += 1

aa_fluo = y + w + f
ratio = aa_fluo / num_aa

print ('the protein as', num_aa, 'aa, and therefore MW of roughly kDa', (num_aa*650)/1000)
print ('the number or Tyrosine is:', y)
print ('the number or Tryptophan is:', w)
print ('the number or Phenylalanine is:', f)
a = 43/487
print ('the Fluorescent aa / total aa is ', format(ratio,'.5f'))
Output:
('the protein as', 38, 'aa, and therefore MW of roughly kDa', 24) ('the number or Tyrosine is:', 0) ('the number or Tryptophan is:', 0) ('the number or Phenylalanine is:', 3) ('the Fluorescent aa / total aa is ', '0.00000')

(Dec-20-2017, 09:02 PM)Afterdarkreader Wrote: Print out the numerator and denominator and make sure that's correct. I almost guarantee that's your problem

Hi Afterdarkreader,

I've already tried your suggestion and no luck at all. I've tried several solution, also
print(len(set_T4))
and even
print (43/487)
give as result 0.000000

Hello again,

I've used this version of python and Ipython and the script worked perfectly. any guess?

Python 3.5.2 (default, Nov 23 2017, 16:37:01)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.
Reply
#5
Added:
print(f'aa_fluo: {aa_fluo} num_aa: {num_aa}')
just before ratio calculation
I get (with that statement in place:
Output:
aa_fluo: 3 num_aa: 38 the protein as 38 aa, and therefore MW of roughly kDa 24.7 the number or Tyrosine is: 0 the number or Tryptophan is: 0 the number or Phenylalanine is: 3 the Fluorescent aa / total aa is  0.07895
Reply
#6
Larz60+ thanks for your answer. Do you have any clue why it doesn't work with the previous code?
Reply
#7
It worked for me, don't have a clue for yourself.
What you should always include is the verbatim error traceback, all of it as it contains
very valuable information.
Reply
#8
I don't get any error, that's why I don't know what is wrong
Reply
#9
Python 2.x defaults to integer division.

Python 3.x uses floating point division.

Since Python 2.2, it has been possible to write code compatible with both Python 2 and 3 by using "from __future__ import division" to change the default behavior to use floating point division and using "//" to get integer division.

$ python
Python 2.7.14 (default, Sep 23 2017, 22:06:14) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 3/4
0


$ python3
Python 3.6.3 (default, Oct  3 2017, 21:45:48) 
[GCC 7.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 3/4
0.75


$ python2
Python 2.7.14 (default, Sep 23 2017, 22:06:14) 
[GCC 7.2.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from __future__ import division
>>> 3/4
0.75
>>> 3//4
0
>>> 
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Divide a number by numbers in a list. Wallen 7 7,924 Feb-12-2022, 01:51 PM
Last Post: deanhystad
  how to divide one big equation entered as a string to small chunks gungurbuz 1 1,590 May-28-2020, 03:46 PM
Last Post: Larz60+
  Python calculator divide by zero help dock1926 4 5,753 Jan-20-2020, 05:15 PM
Last Post: michael1789
  how to divide array number chinting 5 2,806 Dec-30-2019, 11:29 AM
Last Post: ibreeden

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020