How to determine the type of input?
我正在尝试制作一个因子计算器。
输入和预期输出::如果用户输入是正整数,我希望程序给出结果。 如果用户输入不是正整数(负整数,浮点数或字符串),我希望程序再次请求输入。 此外,我希望程序在用户输入为0时结束。
问题:由于输入始终被视为字符串数据,因此我根据输入类型进行编码。
如果有人能够解决这个问题,那将是非常有帮助的,因为我正在自己学习。
如果你想确保它是一个正整数,如果你想继续询问问题中指定的输入,你需要更多的控制结构:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | from math import factorial def get_input(): while True: try: inp = int(input("Enter a positive integer>")) if inp < 0: raise ValueError("not a positive integer") except ValueError as ve: print(ve) continue break return inp print(factorial(get_input())) |
这只是尝试将输入转换为整数,如果失败则重试。
当用户输入
这个程序可能会这样使用:
1 2 3 4 5 6 7 8 | Enter a positive integer> abc invalid literal for int() with base 10: 'abc' Enter a positive integer> 0.2 invalid literal for int() with base 10: '0.2' Enter a positive integer> -5 not a positive integer Enter a positive integer> 6 720 |
顺便说一句,这段代码根据EAFP工作 - 它只是尝试转换为整数,并处理失败。这是比第一次尝试确定它是否可以是整数(LBYL)更惯用的Python。
如果您使用的是Python 2,则需要将
检查输入是否为正整数检查此链接以及上面用户@ cricket_007提供的链接。将这两个信息结合起来可以帮助您找到正确的方向。
尝试将其视为算法问题而不是Python问题,您可以找到解决方案,因为通常每种语言都有其功能,并且它们几乎只有不同的名称。
在python中,它们是函数调用
1 | str.isnumeric() |
我们用一个声明条件,如果
1 2 | if str.isnumeric()==true // so it's numeric // what to do!!!!! |
它是使用的最佳选择
1 2 3 4 | while true //read data as string if str.isnumeric()==true break; // this to break the while loop |
希望这可以帮到你