我是Python新手。这是我的代码,它扫描测试用例数tc
作为输入,然后扫描两个整数r
和c
并计算我的结果。
问题:如何删除错误?
#!bin/bash/python
tc=int(input());
while tc:
r,c=raw_input().split()
if r%2==0:
r=r/2
else:
r=r/2+1
print(r*c)
tc=tc-1
4 //input tc
10 10 //input r=10 c=10
屏幕上显示错误:
Traceback (most recent call last):
File "spoj_solders.py", line 5, in <module>
if r%2==0:
TypeError: not all arguments converted during string formatting
这个字符串格式是什么?
平台:Ubuntu 10.04
答案 0 :(得分:2)
行r,c=raw_input().split()
从用户(raw_input()
)获取文本,将其作为str
类型返回并将其拆分为两个字符串(以空格分隔)并将其存储在变量r
和c
。因此,r
是str
,如果不将if r%2==0:
强制转换为r
,就不能说int
:
r,c=raw_input().split()
if int(r)%2==0:
r=int(r)/2
else:
r=int(r)/2+1
print(r*c)
tc=tc-1
答案 1 :(得分:2)
split()
调用的结果是字符串列表,因此r
和c
变量也是字符串。
因此,当在%
上使用r
运算符时,Python会执行字符串格式化而不是您期望的模数运算。
您需要先将r
转换为正确类型的变量(例如,使用float(r)
)。