根据用户输入从二进制转换为整数?

2024-09-28 03:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我正试图根据我所知道的创建一个转换计算器(在binaryhexinteger之间),只是为了练习我(缺乏)的技能。这是我的密码:

def binary_to_integer(num1):
  bin_to_int = int(num1, 10)
  return(bin_to_int)

def integer_to_binary():
  print('valhold')

def binary_to_hexadecimal():
  print('valhold')

def integer_to_hexadecimal():
  print('valhold')

def hexadecimal_to_binary():
  print('valhold')

def hexadecimal_to_integer():
  print('valhold')

choices = ['binary','hexadecimal','integer']
print(choices)
convert_to = input("What would you like to convert TOO?\n")
convert_from = input("What are you converting from?\n")
convert_to = convert_to.lower()
convert_from = convert_from.lower()

num1 = input("Enter a number\n")


if convert_from == "binary" and convert_to == "integer":
  print(binary_to_integer(num1))

elif convert_from == 'integer' and convert_to == 'binary':
  print(integer_to_binary(num1))

elif convert_from == "binary" and convert_to == "hexadecimal":
  print(binary_to_hexadecimal(num1))

elif convert_from == 'integer' and convert_to == 'hexadecimal':
  print(integer_to_hexadecimal(num1))

elif convert_from == 'hexadecimal' and convert_to == 'binary':
  print(hexadecimal_to_binary(num1))

elif convert_from == 'hexadecimal' and convert_to == 'integer':
  print(hexadecimal_to_integer(num1))

else:
  print("not a valid operation")
  print(exit())

“valhold”意味着我仍然需要在那里写代码,所以忽略它。是的,我的代码很长,重复性很强,可以缩短,但是我正在尝试使用我学到的所有东西。 快进到binary-to_integer()函数(从if语句激活),我的用户输入是“0b101101”(45作为整数)。我不断得到以下错误: ValueError: invalid literal for int() with base 10: '0b101101'

我试过转换成float而不是int,但是没有帮助。我该怎么做才能让用户输入一个二进制val(以num1为单位),并且用户可以接收一个int val作为输出

如果可能的话,我还想继续使用bin命令(与hexint相同)

注意:我知道您可以在REPL-it的命令行上执行此操作,但我希望在代码中执行此操作(Repl.it是我当前的IDE)


Tags: andtofromconvertinputbindefinteger
1条回答
网友
1楼 · 发布于 2024-09-28 03:22:02

bin()命令只能将十进制数转换为二进制表示,而不能相反。还有一个hex()函数对十六进制值执行相同的操作。 如果需要十六进制或二进制数的十进制值,可以使用eval()函数

binarynum = bin(45) # binarynum is now '0b101101'  
hexnum  = hex(171)  # hexnum is now '0xab'


hex_in_decimal = eval(hexnum)       # convert hex back to decimal
binary_in_decimal = eval(binarynum) # convert binary back to decimal

相关问题 更多 >

    热门问题