我如何进行infite循环询问用户是否要输入另一个号码?

时间:2015-05-20 18:23:04

标签: python

如何让我的代码询问用户是否要输入另一个号码?我几乎不能让我的代码运行没有错误,我在python蹒跚学步。我努力编写下面的代码。我知道stackoverflow不是代码编写服务。但是我的小脑子现在受伤了,我无法在没有帮助的情况下继续努力。我想简单地说#34;你想转换另一个号码吗?"

import math
# Global definition 
#Base = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F] 

Base = [str (x) for x in range (10)] + [chr (x) for x in range (ord ('A'), ord ('A') +6)] 
h=[str(i) for i in range(10)]+["A","B","C","D","E","F"]


def BIN2DEC (string_num):
    num = string_num
    if num == 0:
        return '0'
    bin_str = ''
    while num > 0:
        bin_str = str(num % 2) + bin_str
        num = num / 2
    return bin_str



def HEX2DEC (string_num): 
    return str (int (string_num.upper (), 16)) 

# Dec2bin 
# Decimal to binary 

def dec2bin (string_num): 

    num = int (string_num) 
    mid = [] 
    while True: 
            if num == 0: break 
            num, rem = divmod (num, 2) 
            mid.append (Base [rem]) 

    return''. join ([str (x) for x in mid [:: -1]]) 

# Dec2hex 
# Decimal to hexadecimal 

def DEC2HEX (number):
    n = long(number ,16)
    if (n < 0):
        print(0)
    elif (n<=1):
        print n,
    else:
        DEC2HEX( n / 16 )
        x =(n%16)
        if (x < 10):
            print(x), 
        if (x == 10):
            print("A"),
        if (x == 11):
            print("B"),
        if (x == 12):
            print("C"),
        if (x == 13):
            print("D"),
        if (x == 14):
            print("E"),
        if (x == 15):
            print ("F"),

# Hex2tobin 
#The  hexadecimal to bry 
def HEX2BIN (hex_string):
    s = int(hex_string, 16) 
    num_digits = int(math.ceil(math.log(s) / math.log(2)))
    digit_lst = ['0'] * num_digits
    idx = num_digits
    while s > 0:
        idx -= 1
        if s % 2 == 1: digit_lst[idx] = '1'
        s = s / 2
    return ''.join(digit_lst)

# Bin2hex 
# Binary to hexadecimal 

def BIN2HEX (string_num): 
    return DEC2HEX (BIN2DEC (string_num))

my_num = 0
my_num = raw_input("Insert binary,decimal or hexadecimal:")

while(my_num != 0):

    if my_num[0:2] == "0x" or my_num[0] == "x":
        print HEX2BIN(my_num)
        print HEX2DEC(my_num)
        break
    elif my_num[0:2] == "0b" or my_num[0] == "b" and all(x in "01" for x in my_num):
        print""
        print BIN2HEX(my_num)
        print BIN2DEC(my_num)
        break
    else:
        print dec2bin(my_num)
        print HEX2BIN(my_num)
        print long(my_num)
        break
my_num = 0
my_num = raw_input(":")

1 个答案:

答案 0 :(得分:1)

print list(iter(lambda:raw_input("Enter Value, or 'q' to quit:"),"q"))

是我个人最喜欢的方式

iter创建一个迭代器(你需要查找它)

它接受一个可选的无参数函数,它会一直调用,直到它收到第二个参数