我必须编写一个程序来打印数字1到50,但连续有5个数字,如:
1,2,3,4,5
6,7,8,9,10
直到50岁而不使用列表
for i in range(2,51):
if i%5==0:
print i
这给了我5,10,15,20
请帮帮我
答案 0 :(得分:6)
一些提示:
答案 1 :(得分:2)
你可以像你一样开始(除了你需要从1开始 - 那2是真的怪异! - ):
for i in range(1,51):
if i % 5 == 0:
print i
但是你需要为else
加入if
条款,因为即使i
不是多个,你做想要打印一些内容当print i
是5的倍数时,只有 与你已经在做的简单i
:< / p>
else:
print i, ',',
正如其他答案已经说过的那样,尾随的逗号意味着“还没有换行”! - )((它在Python 3中更为平常且更明智。无论如何,但你明显使用Python 2.something,并且在这些版本中是你需要做的))。
答案 2 :(得分:1)
我从来没有使用过Python,但如果不对的话,这应该很接近。
for i in range(1,51):
print i;
print ",";
if (i%5==0)
{ print "\n";}
答案 3 :(得分:0)
另外,请记住,使用print
会导致新行开始。除非如上所述,否则之后会使用逗号。
您可以使用字符串收集值以便稍后打印出来。
答案 4 :(得分:0)
一些提示
要打印1到50,您需要在范围函数中传递n + 1,例如1到51,在C语法中使用(i=1;i<51,i++)
语法
如果您想要在每个数字之间打印逗号
每5次打印换行符,您只需使用当前if i%5==0:
但打印空行,而不是i
要连接num + string“,”您可以使用`i` or str(i) , you can do like `i` +","
如果你最后不需要逗号,你可以像i%5 print“,”打印“\ n”=&gt;
(i%5 and "," or "\n")
print i
将逐行打印i,print i,
将在同一行打印
只是我的2美分
答案 5 :(得分:0)
for i in range(1,51):
if i%5 == 0:
print i
else:
print i, ",",
答案 6 :(得分:0)
(there used to be python code here)
编辑:道歉,没有意识到这是作业。在回答之前我真的需要检查标签。以下是对需要发生的事情的解释。
显然你知道你试图从1到50输出连续数字,所以你需要一个计数器。您已经发现它需要range()
来电,但需要从1到51,而不是2到50。
range()
调用需要从1到51的原因是:它会在i
处启动变量1
,然后检查它是否已达到目标( 51
)在循环之前。如果达到目标(意味着i == 51
),它将退出循环而不执行循环代码。因此,不是从1到50,而是从1到51,这样我们就不会跳过第50次迭代。
接下来,您将要在屏幕上显示这些数字。但是使用python的print
命令会在新行上打印每个数字!那显然不是你想要的。因此,您将不得不创建一个缓冲区字符串以附加每个数字,直到您准备好打印该行。你可以称之为“输出”或其他任何东西。
就个人而言,我喜欢在for
循环之前清除缓冲区,以确保没有剩余的内存跟踪进入输出。叫我偏执狂。所以我在循环之前的一行上写output = ""
。
现在你有了一个缓冲区字符串,你需要做的就是遵循逻辑流程:
i
添加到缓冲区output
。i
是5的倍数,则打印缓冲区output
并将其重置为空字符串。 (我们这样做,以便我们可以为下一行启动缓冲区。)i
不是5的倍数,请在output
缓冲区中添加逗号,以便添加的下一个数字将位于逗号之后。这些步骤应该很容易理解。您之前已经看过的第2步...要检查一个数字是否是另一个数字的倍数,只需使用%
即可。如果A % B == 0
则A是B的倍数。
对于如何解决这个问题,这应该是一个非常简单的解释。希望它有所帮助。
抱歉通过发布答案毁了你的学习经历!现在你就明白为什么答案有效。
答案 7 :(得分:0)
for i in range(1,51):
if i%5 != 0:
print str(i)+',' , # trailing comma means no \n
else:
print i
答案 8 :(得分:0)
此代码将为您提供所需的输出。
youtube-dl_archive stop
您可以将'#!/bin/sh
umask 022
cat /mnt/archive/youtube-dl/youtube-dl_channels | while read line
do
if [[ $line = "channel"* ]]; then
archivedir=$(cut -c34- <<< "$line")
channeluid=$(cut -c-32 <<< "$line")
elif [[ $line = "user"* ]]; then
archivedir=$(cut -c6- <<< "$line")
channeluid="$line"
fi
exec &> /var/log/youtube-dl/$archivedir-[$(date +"%m.%d.%Y_%H-%M-%S")].log
youtube-dl\
-civw\
--newline\
--all-subs\
--no-mtime\
--embed-subs\
--add-metadata\
--write-thumbnail\
--prefer-ffmpeg\
--merge-output-format mkv\
--download-archive /mnt/archive/youtube-dl/"$archivedir"/"$archivedir"-archive.txt\
https://www.youtube.com/$channeluid\
-o "/mnt/archive/youtube-dl/$archivedir/'%(uploader)s'-(%(uploader_id)s)_%(upload_date)s_'%(title)s'_
[%(resolution)s]_[%(id)s].%(ext)s"
done
'放在没有空格的情况下进行打印
用于空间“ #python
for i in range(1,51):
if i%5 == 0:
print (i)#this will give \n at the end
else:
print (i,end=",")#this will print the numbers with coma at the end
”
答案 9 :(得分:0)
在一条语句中,您可以使用print
解压缩生成器表达式,并利用sep
参数。此解决方案的好处是不需要显式的if
/ else
条件逻辑。
k, n = 5, 50
print(*(','.join(map(str, range(i, i+k))) for i in range(1, n+1, k)), sep='\n')
# 1,2,3,4,5
# 6,7,8,9,10
# 11,12,13,14,15
# 16,17,18,19,20
# 21,22,23,24,25
# 26,27,28,29,30
# 31,32,33,34,35
# 36,37,38,39,40
# 41,42,43,44,45
# 46,47,48,49,50