2

好的,所以我正在编写一个程序来查找星期几,并且程序运行顺利,直到这个块

D = input()

A = ( (14 - 'month') /12)

Y = ( 'Year' - 'A' )

MonthProblem = ( 'month' + 12 * 'A' - 2 )

week = ( ('D' + 'Y' + 'Y'/4 - 'Y'/100 + 'Y'/400 + 31 * 'MonthProblem'/12) % 7 )

错误是 TypeError: unsupported operand type(s) for -: 'int' and 'str'

4

4 回答 4

2

当你把逗号放在一个东西周围时,它会变成一个字符串,所以'month'表示这个词,而month表示名为月份的变量中的值。

如果您删除's,您的程序将停止给您该特定错误:

D = input()

A = ( (14 - month) /12)

Y = ( Year - A )

MonthProblem = ( month + 12 * A - 2 )

week = ( (D + Y + Y/4 - Y/100 + Y/400 + 31 * MonthProblem/12) % 7 )

你之前定义过monthetc 的值吗?

于 2012-12-12T02:49:38.777 回答
2

直接按名称使用变量,不带''. 单词 in''表示一个字符串,而不是一个变量。

例如:

A = 1
print(A,'A')

它会输出1, A

对于您的情况,代码应修改为:

D = input()
A = ( (14 - month) /12)
Y = ( Year - A )
MonthProblem = ( month + 12 * A - 2 )
week = ( (D + Y + Y/4 - Y/100 + Y/400 + 31 * MonthProblem/12) % 7 )

如果您确实定义了您使用的变量。

于 2012-12-19T10:43:58.750 回答
1

此代码示例存在许多问题,并且在您解决问题时,错误只是众多错误中的第一个。

'month'似乎它应该是某种变量,而不是字符串。实际错误发生在该行:

A = ( (14 - 'month') /12)

您正在获取幻数14 并从中减去一个字符串。你根本做不到。您不能从整数中减去字符串。用单引号括起来的月份使其成为文字字符串。正如 AndrewC 所提到的,如果您从月份中删除单引号,它将成为一个变量,但它需要有一个值才能在其中执行操作,例如减法。

如果您可以在此处添加一些有关您要执行的操作的上下文,这可能会使我们更容易为您提供帮助。

于 2012-12-12T02:44:23.303 回答
0

这种类型的错误可能是由以下几点引起的:

"some string" + anInt - anotherInt

问题是由于此语句中的 String 引起的 - 编译器将加号解释为将 String 和 int 组合在一起。但是,在这种情况下,它不知道如何处理减号 - 您不能从字符串中减去 int。

您的问题可以通过将整数运算放在括号内来解决,即,

"some string" + (anInt - anotherInt)

如果您仍然遇到问题,我们可以查看您的确切代码并查看应该在哪里添加这些括号 - 但这可能足以让您自己解决,这总是更可取的!


编辑:如果它也是问题的一部分,我会留下上面的帖子,但是在再次查看代码之后,你有这行代码:

A = ( (14 - 'month') /12)

String从 14 中减去“月份” int。这可能是个问题。

于 2012-12-12T02:40:05.317 回答