def isArmstrong(val: int) -> bool:
"""val will be tested to see if its an Armstrong number.
Arguments:
val {int} -- positive integer only.
Returns:
bool -- true is /false isn't
"""
# break the int into its respective digits
parts = [int(_) for _ in str(val)]
# begin test.
counter = 0
for _ in parts:
counter += _**3
return (counter == val)
# Driver Program
x =int(str(input()))
if isArmstrong(int(x)):
print("true")
else:
print("false")当输入103作为输入时,我会出现以下错误
Traceback (most recent call last): File Main.py , line 20, in x =int(str(input()))
ValueError: invalid literal for int() with base 10: ''发布于 2022-05-28 20:50:24
您可能没有正确地输入值,我可以使用代码并输入一个整数。这段代码没有处理任何潜在的错误,您应该小心输入并正确处理它。
另外,_抛出变量用于不使用的值。如果您正在使用该值,则应该定义它。
尝试使用内置的argparse库来使用标志来处理输入,这样您就可以指定标志并处理不正确的输入。我包括一个片段,我将如何改进您的代码,以供参考。
import argparse
def isArmstrong(val: int) -> bool:
"""
The :param val: will be tested to see if its an Armstrong number.
Arguments:
val {int} -- positive integer only.
Returns:
bool -- true is /false isn't
"""
# break the int into its respective digits
parts = [int(i) for i in str(val)]
# begin test.
counter = 0
for part in parts:
counter += part**3
return (counter == val)
if __name__ == "__main__":
description = 'Test if a number is an Armstrong number.'
parser = argparse.ArgumentParser(description=description)
parser.add_argument('val', type=int, help='The number to test.')
args = parser.parse_args()
if isArmstrong(args.val):
print("true")
else:
print("false")输出:

https://stackoverflow.com/questions/72418911
复制相似问题