鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 5

[已解决]006课课后习题求助

[复制链接]
发表于 2017-10-16 18:06:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. i=0
  2. while i<=100:
  3.     if i%2 !=0:
  4.         print (i ,end ='')
  5.         i+=1
  6.     else:
  7.         i+=1
复制代码


小甲鱼的第6课的课后习题,写出1-100内的质数,这个答案的代码执行有问题。我想请问, 这个end=‘ ’是什么意思。我去掉end 可以执行。 谢谢
最佳答案
2017-10-16 19:10:50
首先你这个程序就是错误的,是无法求得质数的

质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

也就是说正能被1和它本身整除的数字,需要尝试除小于本身的所有数,如果除去1和数字本身,其他的都不能被整除,那么该数便可以被证明是质数

你这个程序仅仅除了2,以偏概全

我比较喜欢下面这个方式来求质数
  1. [i for i in range(1,100) if 0 not in [i%j for j in range(2,int(i**0.5+1))]]
复制代码


简化一下就是
  1. for i in range(1,101):
  2.     for j in range(2,int(i**0.5+1)):
  3.         if i%j == 0:
  4.             break
  5.     print(i,end = ' ')
复制代码


下面来说说,print的问题,你的疑问是end参数
print函数最常用的有三个参数
print(value,...,sep=' ',end='\n')
value就是要输出的数值,必选,可以是一个也可以是多个
sep是要输出多个数值时,数值之间的分割符,默认空格,选填
end是输出完该函数指定的所有数值后,追加的字符,默认是换行,选填

你的程序中,是将end修改为了空

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-16 18:44:45 | 显示全部楼层
加了end=‘ ’不会换行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-16 19:10:50 | 显示全部楼层    本楼为最佳答案   
首先你这个程序就是错误的,是无法求得质数的

质数(prime number)又称素数,有无限个。
质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。

也就是说正能被1和它本身整除的数字,需要尝试除小于本身的所有数,如果除去1和数字本身,其他的都不能被整除,那么该数便可以被证明是质数

你这个程序仅仅除了2,以偏概全

我比较喜欢下面这个方式来求质数
  1. [i for i in range(1,100) if 0 not in [i%j for j in range(2,int(i**0.5+1))]]
复制代码


简化一下就是
  1. for i in range(1,101):
  2.     for j in range(2,int(i**0.5+1)):
  3.         if i%j == 0:
  4.             break
  5.     print(i,end = ' ')
复制代码


下面来说说,print的问题,你的疑问是end参数
print函数最常用的有三个参数
print(value,...,sep=' ',end='\n')
value就是要输出的数值,必选,可以是一个也可以是多个
sep是要输出多个数值时,数值之间的分割符,默认空格,选填
end是输出完该函数指定的所有数值后,追加的字符,默认是换行,选填

你的程序中,是将end修改为了空

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-10-17 14:12:30 | 显示全部楼层
落源 发表于 2017-10-16 18:44
加了end=‘ ’不会换行

试了一下 去掉end 确实是换行了 。 执行有问题是版本原因。 3.0 可以执行 2.7的版本不能执行。 谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-17 14:33:15 | 显示全部楼层
本帖最后由 爱吃鱼的猫啊 于 2017-10-17 14:34 编辑
Teagle 发表于 2017-10-16 19:10
首先你这个程序就是错误的,是无法求得质数的

质数(prime number)又称素数,有无限个。


首先非常感谢你的回答。
其次 ,对于你的关于质数的定义,我很赞同。
再次,我有点不明白 你为什么要用i** 0.5 +1 的方式呢?
最后,貌似代码执行出来的结果有点问题呢?我用的是3.3版本。截图如下:

1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-17 15:40:53 | 显示全部楼层
print( )内置函数有5个参数,最常用的是3个,value、sep和end

value就是要打印的内容,比如字符串,数字或者列表之类的。
sep就是当你要同时输出多个内容时,他们之间的分隔符,默认是用“,”逗号隔开的。
end就是当输出完毕后是否换行,默认是“\n”,也就是换行,用空字符“”替代默认参数就变成不换行了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-3-3 03:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表