gpt4 book ai didi

python - 在整数用户输入中打印消息而不是 valueerror?

转载 作者:行者123 更新时间:2023-11-30 22:48:17 26 4
gpt4 key购买 nike

我有一个十进制到二进制转换器,如下所示:

print ("Welcome to August's decimal to binary converter.")
while True:
value = int(input("Please enter enter a positive integer to be converted to binary."))
invertedbinary = []
initialvalue = value
while value >= 1:
value = (value/2)
invertedbinary.append(value)
value = int(value)
for n,i in enumerate(invertedbinary):
if (round(i) == i):
invertedbinary[n]=0
else:
invertedbinary[n]=1
invertedbinary.reverse()
result = ''.join(str(e) for e in invertedbinary)
print ("Decimal Value:\t" , initialvalue)
print ("Binary Value:\t", result)

用户输入立即声明为整数,因此输入的数字以外的任何内容都会终止程序并返回ValueError。我怎样才能打印一条消息而不是程序以 ValueError 终止?

我尝试采用二进制到十进制转换器中使用的方法:

for i in value:
if not (i in "1234567890"):

我很快意识到这不起作用,因为 value 是整数而不是字符串。我想我可以将用户输入保留为默认字符串,然后将其转换为 int 但我觉得这是一种懒惰和粗暴的方式。

但是,我是否正确地认为我尝试在用户输入行之后添加的任何内容都将不起作用,因为程序将在到达该行之前终止?

还有其他建议吗?

最佳答案

您需要使用 try/except block 处理 ValueError 异常。你的代码应该是这样的:

try:
value = int(input("Please enter enter a positive integer to be converted to binary."))
except ValueError:
print('Please enter a valid integer value')
continue # To skip the execution of further code within the `while` loop

如果用户输入任何无法转换为int的值,则会引发ValueError异常,该异常将由 except处理> 阻止并打印您提到的消息。

阅读Python: Errors and Exceptions获取详细信息。根据文档,try 语句的工作原理如下:

  • 首先,执行 try 子句(try except 关键字之间的语句)。
  • 如果没有发生异常,则跳过 except 子句并完成 try 语句的执行。
  • 如果在执行 try 子句期间发生异常,则跳过该子句的其余部分。然后,如果其类型与以 except 关键字命名的异常匹配,则执行 except 子句,然后在 try 语句之后继续执行。
  • 如果发生的异常与 except 子句中指定的异常不匹配,则会将其传递到外部 try 语句;如果没有找到处理程序,则这是一个未处理的异常,执行将停止并显示如上所示的消息。

关于python - 在整数用户输入中打印消息而不是 valueerror?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40224243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com