2017-03-18 84 views
-1

我是python的新手,所以在这里轻松点... 在这个例子中formattedRank ='N.A.'Python字符串比较错误:int()以10为底的无效文字:

if(int(formattedReview) <= 50 and (formattedRank == "N.A.") and (formattedReview == "N.A.")): 
     print("hi") 
     rank = int(formattedRank) 
     review = int(formattedReview) 
     totalRank += rank 
     totalReviews += rank 
     count += 1 

错误:

ValueError: invalid literal for int() with base 10: 'N.A.' 

为什么会这个错误是发生我来自一个主要是C#,Java脚本背景,所以我敢肯定,缺乏在这里认识的是伤害我

+0

我们需要您发布足够的代码才能引发您引用的错误。看起来formattedReview或formattedRank是一个包含非数字的字符串。 – Prune

+0

你看到顶部......我指定了什么formattedRank是 –

+1

那么你期望答案是什么。在我看来,你正在得到正确的行为。字符串“N.A.”的整数值是一个ValueError。你是否期待不同?字符串“N.A.”不是有效的整数。这也不代表Python中的任何内容。 – RobertB

回答

0

很容易的将其缩小为一个最小的例子:

formattedRank = 'N.A' 
int(formattedRank) 

int函数根本不接受字符串'N.A'。它不知道如何将它解释为一个整数,为什么它呢?它不对应任何整数。

0

等一下......这是不可能的经过:

if(int(formattedReview) <= 50 and 
     (formattedRank == "N.A.") and 
     (formattedReview == "N.A.")): 

如果formattedReview是字符串“NA”,那么它无法转换为整数,更何况一个是< = 50.您的逻辑错误...我期望您的formattedReview有问题的值在字符串中有非数字,这很容易导致错误。

相关问题