函数内部使用global方法导致while循环执行异常

问题遇到的现象和发生背景

本人刚学python,今天写一个将十进制整数转换为二进制的python程序时遇到一点问题,
如下图,

a=input("请输入待转换的十进制数字:")
b=a
def transform(num):
    while num >= 1:
        global str1
        str1=''
        if num % 2 == 0:
            str1 += str(0)
        else:
            str1 += str(1)
        num = num // 2
if float(a) % 1==0:
    a = int(a)
    transform(a)
    print(f'str1是{str1}')
    print(f"将{b}转换二进制,结果是:{str1[::-1]}")

运行结果及报错内容

请输入待转换的十进制数字:100
str1是1
将100转换二进制,结果是:1

我的解答思路和尝试过的方法

我想让print语句可以访问到函数中的str1,因此使用global方法,
但是导致while循环只执行一次

我想要达到的结果

while循环正常执行,程序可以将十进制整数转换为二进制

str1 = '' 放到循环外就行了

a = input("请输入待转换的十进制数字:")
b = a

str1 = ''
def transform(num):
    while num >= 1:
        global str1
        if num % 2 == 0:
            str1 += str(0)
        else:
            str1 += str(1)
        num = num // 2


if float(a) % 1 == 0:
    a = int(a)
    transform(a)
    print(f'str1是{str1}')
    print(f"将{b}转换二进制,结果是:{str1[::-1]}")