Python中的输入和输出?

时间:2018-01-31 17:47:18

标签: python input output

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

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

- 示例问题

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

示例(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)

2 个答案:

答案 0 :(得分:0)

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

R = input()
C = input()

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

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

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

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

希望有所帮助

答案 1 :(得分:0)

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

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

assert 1 <= R <= 20这不是真的需要,因为你的逻辑没有任何可靠的要求(赋值不告诉你不允许高数值)

for r in range(R): print('*' * C)这样就可以了。

根据我上面的评论,请考虑以下事项:

# 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)