【问题标题】:why am i getting 310 after i use sys.stdout() to print it, instead of getting only 3?为什么我使用 sys.stdout() 打印后得到 310,而不是只得到 3?
【发布时间】:2019-05-07 13:01:10
【问题描述】:

我在 sys.stdout(name) 的输出结果末尾得到了一些随机数,而不是只得到所需的结果。我做错了什么?

代码:

import sys

print('enter first number: ')
no1 = int(sys.stdin.readline())
print('enter second number: ')
no2 = int(sys.stdin.readline())
print('enter third number: ')
no3 = int(sys.stdin.readline())

if (no1 > no2) and (no1 > no3):
    largest = no1
elif (no2 > no1) and (no2 > no3):
    largest = no2
else:
    largest = no3
print('largest: ', largest)     #this gives right result
print(sys.stdout.write('largest: %s' %largest))     #this gives some random int with result at the end

这样的代码是查找 3 个数字中最大的一个,所以如果我们输入 first=1,second=2,third=3,我会得到 3 打印但 310 使用 stdout()。 3 是正确的答案。

【问题讨论】:

  • 出于某种奇怪的原因,您正在打印出sys.stdout.write() 的返回值——这是写入的字符数。所以你会从写入中得到3,然后是从打印中得到10
  • 感谢@jasonharper,它实际上帮助了我。 ??????

标签: python-3.x


【解决方案1】:

要打印预期结果,以下代码行就足够了:

sys.stdout.write('largest: %s' %largest)

虽然下面的代码行还打印出所需结果的长字符数

print(sys.stdout.write('largest: %s' %largest))  

感谢@jasonharper!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 1970-01-01
    • 2023-02-21
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多