我尝试在pythonshell中练习输入/输出重定向。我有一个文件名为SentinelValue.py这就是我在另一个文件中添加数字的代码:
data = eval(input("Enter an integer (the input ends " + "if it is 0): "))
sum = 0
while data != 0:
sum += data
data = eval(input("Enter an integer (the input ends " + "if it is 0): "))
print("The sum is", sum)
“另一个文件”数字.txt“包含数字:
1
2
3
4
5
6
7
8
9
0
还有我的输出.txt文件是我想显示总和的地方。你知道吗
我试过使用:
python SentinelValue.py < Numbers.txt > output.txt
但在shell中,它突出显示了“SentinelValue”,并表示“无效语法”。 我不知道为什么不行。你知道吗
您的代码有几处错误:
eval()
进行直接的用户输入(或者几乎任何时候,在99%的情况下,当你认为你需要它的时候-你不需要!)。一个简单的int()
转换应该足够了,而不会有eval()
的所有危险。你知道吗eval()
计算输入。此外,在python2.x上,input()
本身进行求值(它相当于eval(raw_input())
),因此每当遇到无效输入时,就会弹出一个SyntaxError
。你知道吗SyntaxError
,它也肯定会弹出一个TypeError
,因为eval()
需要一个字符串,它会从内部input()
接收一个整数。你知道吗output.txt
中结束(在这里您重定向STDOUT)。你知道吗sum()
用作一个变量来隐藏它。这是一个糟糕的做法,可能会导致许多问题和意想不到的结果下线。你知道吗所以,记住这些,下面是如何重写它来解决这些问题:
相关问题 更多 >
编程相关推荐