我有一个项目,我想将数据输入到csv。
如果数据小于500,我希望数据保存在第一列中;如果值大于500,我希望第二列保存另一个数据。
[300,600]
我期望的结果是:
输入:600
输入:300
结果应为<EditText
android:id="@+id/articlename"
android:layout_width="278dp"
android:layout_height="75dp"
android:layout_marginStart="16dp"
android:layout_marginTop="4dp"
android:clickable="false"
android:cursorVisible="false"
android:ems="10"
android:focusable="false"
android:inputType="textMultiLine"
android:text="Name of article"
android:textColor="#FFF"
android:textSize="22dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_marginStart="16dp"
android:layout_marginTop="108dp"
android:background="@drawable/circle"
android:onClick="onClicknews"
android:text="news\n(click me)"
android:textColor="#FFFF"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
。
如果再次重新输入,则数据应保存到第二行。
答案 0 :(得分:0)
错误在于您将raw_input
返回的字符串与整数进行比较。在Python 3中会引发TypeError
,而Python 2很高兴继续使用不正确的输入。
在将输入传递给try:...except ValueError:
函数之前,您可以将输入转换为writeToFile
块中的int。
由于您需要两个输入,因此必须调用raw_input
两次,然后将值传递给write函数。我写的程序类似于这个解决方案:
import csv
def writeToFile(writer, x, y):
a = 0
b = 0
if x > 500:
b = x
a = y
elif x < 500:
a = x
b = y
g = [a, b]
writer.writerow(g)
with open('temp.csv', 'ab') as f:
writer = csv.writer(f)
while True:
x = raw_input('>>> Input: ')
y = raw_input('>>> Input: ')
try:
x = int(x)
y = int(y)
except ValueError:
print 'Invalid input: {}, {}'.format(x, y)
else: # No error.
writeToFile(writer, x, y)