如何用python编写一个程序,一直要求用户输入一个八进制数,直到用户输入一个八进制数?



我需要编写一个将八进制数转换为十进制数的程序。然而,如果我输入一个非八进制数字,如1079,程序显示错误并停止。

我希望程序一直要求用户输入一个有效的输入,直到用户输入一个有效的输入。

while True:
n= input("Enter an octal value to convert to decimal, binary and hexadecimal form:")
n = n.strip() #removes trailing and leading spaces
if n.isdigit():
for i in n:
if i == "8" or i == "9":
print("Invalid octal.")
break
else:
octToDec = int(n,8)

print(n, "in Decimal is: ", octToDec)
break

else:
print("Invalid input")

这是我到目前为止想出的,但是程序在打印&;Invalid八进制。&;后中断。我希望它返回到第二行代码,询问用户在错误之后的输入。

将适当的八进制值转换为十进制。如果输入的值是字符串,则显示错误,然后返回第二行以要求用户输入新值。如果输入非八进制值。它显示一个错误,然后中断。例如:如果我输入"1079",它显示:

Traceback (most recent call last):
File "<string>", line 10, in <module>
ValueError: invalid literal for int() with base 8: '1079'

我想让它显示:

Invalid octal.
Enter octal value to convert to decimal:

,直到用户输入一个有效的八进制数。

似乎没有检查数字是否可转换为八进制。必须除以以8为底。如果没有余数,则它是一个"八进制数"。否则就是别的东西了。这就是你所需要的。您可以从以下代码中检查base8/八进制的逻辑:https://www.tutorialspoint.com/check-if-number-is-palindrome-or-not-in-octal-in-python

这是一个版本:

while True:
ans = input("Number in octal: ")
try:
number = int(ans, 8)
break
except ValueError:
print(f"{ans} can not be interpreted as ocal nubmer")
continue
# do stuff with number...

不要费心检查89或任何其他非法字母或以任何方式对字符串进行消毒-只需将其传递给int(ans, 8)并查看是否有效。

最新更新