It looks like you're trying to use i and count as two different values to use while iterating, and I don't think you need to do this to get what you want.
First of all - a while statement is basically a loop that runs until it is False. So if you have
green = True
while green:
    print("Hello")
...this will never end. Placing the while in a for loop doesn't change that; it simply waits for the while my_condition to turn False.
Additionally, in your first loop you are incrementing count -- but the while loop is looking at the value of i, which never gets a chance to change because the while never becomes untrue!
Finally - in your second loop, you're setting count at the beginning of each iteration! This means that count will never actually progress in a meaningful way; you set it to 0, print an emoticon, increment it by 2, then continue in the for loop - resetting count to 0!
Basically, just realize that you can use i directly, there's no need for a count variable as well. for i in something will iterate over whatever is in something if it is an iterable thing. So for example:
for i in range(0, 10):
    if i % 2 == 0:
        print(":)")
    else:
        print(":(")
EDIT: After seeing the original code, it looks like you are trying to produce a generator object.
Using yield in conjunction with while or for will net you a generator - an object you can iterate over. Here's a baseline example of that.
>>> def baz(x):
...     i = 0
...     while i > x:
...             yield i
...             i += 1
>>> baz(4)
<generator object baz at 0x1004935a0>
>>> me = baz(4)
>>> me.next()
0
>>> me.next()
1
>>> me.next()
2
>>> me.next()
3
>>> me.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>> 
In a situation where you just want to generate a set number of objects, you can skip the while and just write a for, which will save you a couple of lines. For example, the following code does the same as the above:
def foo(x):
    for i in range(0, x):
        yield i
However, in the example you've shown me there seems to be some more involved math during the while loop, so it does make sense to use a while sometimes. Imagine a situation where you wanted to exit the loop when i became prime, for example…
def until_prime(x):
    while is_not_prime(x): ## or, 'while not is_prime(x)', whatever our imaginary function does
        x = x * (x + 1)
        yield x
I have no idea if the code above will ever generate a prime number, so please don't judge it too harshly. :D Nevertheless, it is an example of a situation where you couldn't necessarily write a for loop, so you'd need to wait until a condition arose.
     
    
func(x)ever return a number <=0? Also the first loop will always hit the else condition.def gruseis(num): bina6 = int(num) _bina6 = bina6 if bina6 != 0: while bina6 > 0: bina6 %= 1000000 yield bina6 bina6 = _bina6 // 1000000 _bina6 = bina6 else: bina6 = "0" yield bina6sorry, don't know how to comment with code