注册

详解sys.stdin(标准输入流对象)属性的使用方法

Python中的sys.stdin属性主要用于读取用户输入的数据,它是一个类文件对象(file-like object),提供了从键盘和其他文件对象读取数据的接口。sys.stdin属性通常与input()函数一起使用,来获取控制台输入的数据。sys.stdin属性的默认值为标准输入流(sys.stdin)。

使用sys.stdin来读取用户输入的数据有两种常见的方式:

使用input()函数

在Python中,input()函数是用来读取用户输入的数据的,其内部实现就是调用sys.stdin.readline()函数。因此,直接使用input()函数来获取控制台输入的数据即可,例如:

import sys

# 读取用户输入的数据
name = input('What is your name?: ')
print('Hello,', name)

在执行上述代码时,程序会等待用户输入数据,用户输入完毕后,程序会输出相应的结果。

使用sys.stdin.readline()函数

除了使用input()函数外,还可以直接使用sys.stdin.readline()函数来读取用户输入的数据,例如:

import sys

# 读取用户输入的数据
data = sys.stdin.readline().strip()
print('Input data:', data)

在执行上述代码时,程序会等待用户输入数据,用户输入完毕后,程序会输出相应的结果。

需要注意的是,使用sys.stdin.readline()函数读取用户输入的数据时需要注意以下几点:

  • 读取到的数据会包含结尾的换行符,因此需要使用strip()函数去除换行符。
  • 如果需要读取多行数据,需要使用循环结构来重复读取数据直到读取完毕。

实例一

下面的代码演示了如何使用sys.stdin属性读取多个空格分隔的整数,并将它们相加并输出结果:

import sys

# 读取多个空格分隔的整数,并计算它们的和
line = sys.stdin.readline().strip().split()
nums = [int(x) for x in line]
print(sum(nums))

在执行上述代码时,程序会等待用户输入多个空格分隔的整数,例如1 2 3 4 5,用户输入完毕后,程序会输出相应的结果15

实例二

下面的代码演示了如何使用sys.stdin属性读取包含多个数据点的文件,并计算所有数据点的平均值(注意,该文件应该在同一目录下的data.txt文件中):

import sys

# 从文件中读取数据
with open('data.txt') as file:
    # 初始化变量
    count = 0
    total = 0.0

    # 从文件中读取每个数据点,并计算它们的平均值
    for line in file.readlines():
        nums = [float(x) for x in line.strip().split()]
        count += len(nums)
        total += sum(nums)

    # 输出结果
    print('Average:', total / count)

在执行上述代码时,程序会打开位于同一目录下的data.txt文件,从文件中读取数据,统计数据点个数和总和,并计算平均值,最后输出平均值。