【问题标题】:Inputs and Outputs in Python?Python中的输入和输出?
【发布时间】:2018-01-31 17:47:18
【问题描述】:

我正在研究一些 python 挑战,以及要求输入并产生输出的问题。我不太了解输入和输出的概念。您的代码是否应该读取输入并产生输出?我已经粘贴了挑战中的一个问题,如果有人解释一下会很棒。谢谢

=================================

- 示例问题

从标准输入中读取两个整数 R 和 C,然后打印 R 行,每行带有 C 星号 (*)。

示例(R=3,C=5):

******
******
******

示例(R=2,C=10):

**********
**********

输入

第一行将包含一个整数 R。要打印的行数。

第二行将包含一个整数 C。每行中要打印的星号数。

R、C 最多为 20。

输出

打印一个由 R 行和 C 列组成的矩形。

=================================

- 回答

if __name__ == '__main__':
R, C = map(int, raw_input().split())
assert 1 <= R <= 20
assert 1 <= C <= 20

for r in range(R):
    print('*' * C)

【问题讨论】:

  • "您的代码是否应该读取输入并产生输出?"是的。
  • 我很确定输入和输出是标准输入和标准输出。不是 raw_input。
  • 但是在 python 中是怎么做到的呢?
  • 你试过在这个网站上搜索“从标准输入读取python”吗?
  • 是的,但我想知道它在哪里读取输入

标签: python input output


【解决方案1】:

if _ _name_ _ == '_ _main_ _': 这不是有效的 Python。它会导致SyntaxError

R, C = map(int, raw_input().split()) 缩进不正确。此外,raw_input() 将被执行一次,这意味着它只会消耗一行用户输入,然后.split() 实际上会被空格字符分割。

assert 1 &lt;= R &lt;= 20这不是真正需要的,因为您的逻辑没有任何可靠的要求(作业不是告诉您不允许高数值)

for r in range(R): print('*' * C) 这可以解决问题。


根据我上面的 cmets,考虑以下几点:

# If Python 2.x
# from __future__ import print_function

def stdin_readline():
    # If Python 2.x
    # return raw_input()

    # If Python 3.x
    return input()

if __name__ == '__main__':
    R = int(stdin_readline())
    C = int(stdin_readline())
    for r in range(R):
        print('*' * C)

你可以把它减少到只有三行:

# If Python 2.x
# from __future__ import print_function

def stdin_readline(*args):
    # If Python 2.x
    # return raw_input()

    # If Python 3.x
    return input()

if __name__ == '__main__':
    R, C = map(int, map(stdin_readline, range(2)))
    output = map(print, ['*' * C for r in range(R)])

    # If Python 3.x
    list(output)

【讨论】:

  • 感谢您的回复,我很困惑的是用户输入的是输入还是从文件中读取的?
  • @mij09 嗯,它是从标准输入中读取的。这并不意味着它来自用户,但代码不应该担心这一点。 raw_input() 从标准输入读取,无论此输入来自文件、来自另一个进程的输出还是来自用户,都无关紧要。从您的流程的角度来看,它只是一个字符流。
【解决方案2】:

在python中,每次调用input,都会得到一个“行”的输入。因此,在这种情况下,他们告诉您,将收到 2 行,首先是 R,然后是 C。所以,您必须按该顺序获得两个输入,这意味着

R = input()
C = input()

现在,关于输入的事情,是你将它们作为字符串接收,所以如果你想将它们用作整数,你需要将它们转换为整数,所以你这样做

R = int(input())
C = int(input())

关于输出,你是对的。如果他们告诉您生成输出,则只需使用函数print。所以,剩下的代码就是你最后的代码了

for r in range(R):
print('*' * C)

希望对你有帮助

【讨论】:

  • 非常感谢!还有一件事,用户必须自己输入输入还是可以从文件中读取?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多