我正在研究一些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)
答案 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)