我正在尝试在python中编写一个if语句,它将使用以下代码写入csv文件。我希望if语句写入CSV文件中的单元格。我希望它说“X大于Y”或“Y大于X”。
from bs4 import BeautifulSoup
import csv
x = int(raw_input())
y = int(raw_input())
f = csv.writer(open("pe_ratio.csv", "w"))
f.writerow(["Company Name","PE"])
f.writerow('[x+y,
if x > y:
print "X is bigger than y"
if x < y:
print "Y is bigger than x"
]')
尝试更正时,我收到以下错误:
"pe_ratio.py", line 8
f.writerow('[x+y,
SyntaxError: EOL while scanning string literal
此代码解决了问题:
from bs4 import BeautifulSoup
import csv
x = int(raw_input())
y = int(raw_input())
f = csv.writer(open("pe_ratio.csv", "w"))
if x > y:
f.writerow(["X is bigger than y"])
elif x < y:
f.writerow(["Y is bigger than X"])
答案 0 :(得分:2)
是什么让你认为你可以做到这一点?你将无法在带引号的字符串中引用局部变量x和y。你想要成就什么?
如果只是打印“X大于y”或“Y大于x”而不是这样做:
if x > y:
f.writerow(["X is bigger than y"]
elseif x < y:
f.writerow(["Y is bigger than X"]
答案 1 :(得分:2)
您无法在字符串中间评估代码。但你不需要;您可以评估值是字符串的代码。
在您的情况下,您正在尝试评估if
语句,该语句不具有值。您可以通过使用三元if
表达式来解决此问题:
f.writerow([x+y,
"X is bigger than Y" if x > y else "Y is bigger than x"])
但请注意,这不能正确处理x == y
的情况;要做到这一点,你需要将一个if-else
表达式嵌套在另一个表达式中,这甚至比现在更加丑陋。
更好的解决方案是使用if
语句来驱动writerow
而不是相反:
if x > y:
f.writerow([x+y, "X is bigger than y"])
elif x < y:
f.writerow([x+y, "Y is bigger than x"])