如何确定输入的类型?

时间:2017-08-26 14:55:18

标签: python

我试图制作一个因子计算器。

输入和预期输出::如果用户输入是正整数,我希望程序给出结果。如果用户输入不是正整数(负整数,浮点数或字符串),我希望程序再次请求输入。此外,我希望程序在用户输入为0时结束。

问题:由于输入始终被视为字符串数据,因此我根据输入类型进行编码。

如果有人能够解决这个问题,那将是非常有帮助的,因为我正在自己学习。

3 个答案:

答案 0 :(得分:1)

如果你想确保它是一个正整数,如果你想继续询问你问题中指定的输入,你需要更多的控制结构:

break

这只是尝试将输入转换为整数,如果失败则重试。 try/except语句用于跳过as。如果except结构不是整数,则会捕获错误,如果错误小于0,则会明确引发错误。它还使用factorial(get_input()) 0功能打印更好的错误指示。它被封装在一个使事情更容易的功能中 - 我发现0具有相当的表现力,并且具有更多可重复使用的附加功能。

当用户输入为factorial时,这当前不会结束,因为ifEnter 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 的完全有效输入,尽管它应该很容易适应这一点使用input声明。

此程序可能会像这样使用:

raw_input

顺便说一句,这段代码根据EAFP工作 - 它只是尝试转换为整数,并处理失败。这是比第一次尝试确定它是否可以是整数(LBYL)更惯用的Python。

如果您使用的是Python 2,则需要将defaultOptions: any = {};更改为<app-slick [defaultOptions]="{dots: true, arrows: false}">

答案 1 :(得分:0)

尝试将其视为算法问题而不是Python问题,您可能会找到解决方案,因为通常每种语言都有其功能,并且它们几乎只有不同的名称。 在python中,它们是函数调用<p:dataGrid value="#{search.compoundRecommendations}" var="triplet" columns="1" layout="grid"> <h:form> <p:commandLink action="sense" actionListener="#{search.createSense}" ajax="false"> <f:attribute name="lexemeID" value="#{triplet.lexeme.lexemeKey.key}" /> <f:attribute name="headID" value="#{triplet.head.interlingualKey.key}" /> <f:attribute name="modRelID" value="#{triplet.modRel.interlingualKey.key}" /> <f:attribute name="modifierID" value="#{triplet.modifier.interlingualKey.key}" /> <h:outputText value="#{triplet.defaultName}" /> </p:commandLink> </h:form> ,如果每个字符都是数字,则返回true;如果不是,则返回false。

isnumeric()

我们使用声明条件,如if

str.isnumeric()

使用的最佳选择,如果

if str.isnumeric()==true // so it's numeric
  // what to do!!!!!

希望这可以帮到你

答案 2 :(得分:0)

Check if input is positive integer查看此链接以及上面用户@ cricket_007提供的链接。将这两个信息结合起来可以帮助您找到正确的方向。