转换字节程序python

时间:2013-12-25 18:19:51

标签: python byte converter

我只是搞乱基本的python程序。在这里,我正在尝试制作一个字节转换器。我想我处在一个无限循环中。有人可以举几个例子说明我的原因吗?我是一个非常初学的程序员。任何输入都有帮助!

def bytesConverter():
    a = input("1 = KB, 2 = MB, 3 = GB, 4 = TB:")
    if a == 1:
        b = input("amount of KB(s):")
        c = b/1024.0
        d = c/1024.0
        e = d/1024.0
        print(str(b) + str(" KBs"))
        print(str(c) + str(" MBs"))
        print(str(d) + str(" GBs"))
        print(str(e) + str(" TBs"))
    elif a == 2:
        b = input("amount of MB(s):")
        c = b*1024.0
        d = b/1024.0
        e = d/1024.0
        print(str(c) + str(" KBs"))
        print(str(b) + str(" MBs"))
    elif a == 3:
        b = input("amount of GB(s):")
        c = b*1024.0
        d = c*1024.0
        e = b/1024.0
        print(str(d) + str(" KB(s)"))
        print(str(c) + str(" MB(s)"))
        print(str(b) + str(" GB(s)"))
    elif a == 4:
        b = input("amount of TB(s):")
        e = b*1024.0
        c = e*1024.0
        d = c*1024.0
        print(str(d) + str(" KB(s)"))
        print(str(c) + str(" MB(s)"))
        print(str(e) + str(" GB(s)"))
        print(str(b) + str(" TB(s)"))

1 个答案:

答案 0 :(得分:0)

你不是一个无限循环。没有循环,你没有使用递归。

根据print的语法判断,我相信您使用的是Python 3.x.如果是这样,那么你应该知道input总是返回一个字符串对象。

这意味着这一行:

a = input("1 = KB, 2 = MB, 3 = GB, 4 = TB:")

a分配给字符串。

此外,你的if语句正在将该字符串与整数进行比较,而这些整数从不起作用。

要解决此问题,请将输入设为整数:

a = int(input("1 = KB, 2 = MB, 3 = GB, 4 = TB:"))

或将该字符串与其他字符串进行比较:

if a == '1':
    ...
elif a == '2':
    ...
elif a == '3':
    ...
elif a == '4':
    ...

此外,您还需要做两件事:

  1. 将其他输入转换为整数,以便对它们进行数学运算。

  2. 调用该函数(我假设您已经这样做了,但我会提及它,因为您没有包含该行)。


  3. 最后,没有理由在字符串上调用str。一切都是这样的:

    str(" KBs")
    

    可以/应该改写为:

    " KBs"