鱼C论坛

 找回密码
 立即注册
查看: 2170|回复: 12

[已解决]【不懂就问——python004课后练习】

[复制链接]
发表于 2017-10-10 13:57:15 | 显示全部楼层 |阅读模式

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

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

x
第一个疑问:
题目: 尝试写以下代码实现下属功能
=======================
>>>
请输入一个整数:5
1
2
3
4
5
>>>

小甲鱼的课后答案代码如下:
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. i = 1
  4. while number:
  5.     print(i)
  6.     i = i + 1
  7.     number = number -1
  8.    
复制代码


我手动分解了一下这个步骤,如下:

(1)
i = 1,print(i) ==> i =1
i = 1 +1 =2,  number=5-1=4
_____________________________________
(2)
i = 2,print(i) ==> i =2
i = 2 +1 =3,  number=4-1=3
_____________________________________
(3)
i = 3,print(i) ==> i =3
i = 3 +1 =4,  number=3-1=2
____________________________________
(4)
i = 4,print(i) ==> i =4
i = 4 +1 =5,  number=2-1=1

____________________________________
(5)
i = 5,print(i) ==> i =5
i = 5 +1 =6,  number=1-1=0


为什么就到第四步结束了啊? 没有第五步?





第二个疑问:
动动手的第一个题目: 完善第二个改进要求,(为用户提供三次改进机会,机会用完or用户猜到就退出循环.......)
004-小甲鱼动动手0问题.jpg

这代码中第09行:
print(“不妨猜一下小甲鱼心中想的是哪个数字:'', end='' ”)

这里的end='' 是什么意思,怎么理解?
我理解的是print(“不妨猜一下小甲鱼心中想的是哪个数字:” 到这里就结束了。



最佳答案
2017-10-10 15:23:27
zhuoyue65 发表于 2017-10-10 15:05
问题1:但是运行之后就显示1,2,3,4,5  并没有显示第五步:number=0啊?

第一个问题:
你的分解没问题啊,第五步的输出5不是打印出来了么,为什么说没显示?
【显示第五步:number=0】这是什么意思啊?  你又没print(number)为什么会把number输出啊?

第二个问题:
  1. print("不妨猜一下小甲鱼心里是哪个数字:", end='')
复制代码

end不是写在引号里的,两处print都向上面这么改
你把end写在引号里,就会把那部分当成是字符串输出了,就像你给出的那样
而实际上,end是作为一个参数存在的,这也就是为什么end前面还有一个逗号的原因,在默认情况下end='\n'也就是换行的意思,每次打印后都会换行。
而在本题中我不希望后面换行,我想接着打印出的字符串后面跟着输入,所以就把end改成 end='',就是不换行的意思。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-10 14:06:39 | 显示全部楼层
你第一个问题没明白
第二个问题中end是指把print内所有值输出完后追加到后面的字符,默认是换行(\n)
  1. end:   string appended after the last value, default a newline.
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 14:21:45 | 显示全部楼层
Teagle 发表于 2017-10-10 14:06
你第一个问题没明白
第二个问题中end是指把print内所有值输出完后追加到后面的字符,默认是换行(\n)

我运行程序,每次都会加上 end=''  比较奇怪。 还是就是这样的?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 14:23:49 | 显示全部楼层
zhuoyue65 发表于 2017-10-10 14:21
我运行程序,每次都会加上 end=''  比较奇怪。 还是就是这样的?

不用啊,end默认等于\n
也就是说,不指定的时候,输出玩print里面的值,再输出一个换行
  1. >>> print('nihao');print('nihao')
  2. nihao
  3. nihao
  4. >>> print('nihao',end=' ');print('nihao')
  5. nihao nihao
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 14:38:54 | 显示全部楼层
第一个问题:会执行到第五步,number没有归零,while循环就不会停止;

第二个问题:print()函数有三个参数,其中一个就是“end=”,默认是“\n”也就是默认在输出完指定内容后换行。而加上 end = ""参数,表示输出完指定内容后不换行,而是用一个空字符替代了原来的换行符。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 15:05:55 | 显示全部楼层
铁棍阿童木 发表于 2017-10-10 14:38
第一个问题:会执行到第五步,number没有归零,while循环就不会停止;

第二个问题:print()函数有三个 ...

问题1:但是运行之后就显示1,2,3,4,5  并没有显示第五步:number=0啊?


问题2:
  1. import random
  2. times = 3
  3. secret = random.randint(1,10)
  4. guess = 0    #此处给guess赋值(一个绝对不等于secret的值)
  5. print("不妨猜一下小甲鱼心里是哪个数字:'',end='' ")
  6. while (guess != secret) and (times > 0):
  7.     temp = input()
  8.     guess = int(temp)
  9.     times = times -1 #用户每输入一次,可用机会就减1
  10.     if guess == secret:
  11.         print("你是小甲鱼肚子的蛔虫吗?")
  12.         print("猜中了也没奖励!")
  13.     else:
  14.         if guess > secret:
  15.             print("大了大了")
  16.         else :
  17.             print("小了小了")
  18.         if times > 0:
  19.             print("再试一下吧:'',end''")
  20.         else :
  21.             print("机会用光了")
  22. print("Game Over.")
复制代码


我的代码,但是我运行之后是这样的:
========================== RESTART: D:\004-动动手1.py ==========================
不妨猜一下小甲鱼心里是哪个数字:'',end=''

是哪里有问题么?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:11:27 | 显示全部楼层
zhuoyue65 发表于 2017-10-10 15:05
问题1:但是运行之后就显示1,2,3,4,5  并没有显示第五步:number=0啊?

number只要等于0了,while循环就停止了啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:14:17 | 显示全部楼层
zhuoyue65 发表于 2017-10-10 15:05
问题1:但是运行之后就显示1,2,3,4,5  并没有显示第五步:number=0啊?

格式应该是:print("再试一次吧:",end = "")
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 15:16:54 | 显示全部楼层
铁棍阿童木 发表于 2017-10-10 15:11
number只要等于0了,while循环就停止了啊

哦,好的。
number=0,while停止这个是默认设置? 潜规则就是这么认定的咯? 还是怎么理解?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-10 15:18:11 | 显示全部楼层
铁棍阿童木 发表于 2017-10-10 15:14
格式应该是:print("再试一次吧:",end = "")

print("不妨猜一下小甲鱼心里是哪个数字:'',end='' ")
哪个数字后面冒号: 单引号吧? ,end=单引号吧?
那我应该没错。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:23:27 | 显示全部楼层    本楼为最佳答案   
zhuoyue65 发表于 2017-10-10 15:05
问题1:但是运行之后就显示1,2,3,4,5  并没有显示第五步:number=0啊?

第一个问题:
你的分解没问题啊,第五步的输出5不是打印出来了么,为什么说没显示?
【显示第五步:number=0】这是什么意思啊?  你又没print(number)为什么会把number输出啊?

第二个问题:
  1. print("不妨猜一下小甲鱼心里是哪个数字:", end='')
复制代码

end不是写在引号里的,两处print都向上面这么改
你把end写在引号里,就会把那部分当成是字符串输出了,就像你给出的那样
而实际上,end是作为一个参数存在的,这也就是为什么end前面还有一个逗号的原因,在默认情况下end='\n'也就是换行的意思,每次打印后都会换行。
而在本题中我不希望后面换行,我想接着打印出的字符串后面跟着输入,所以就把end改成 end='',就是不换行的意思。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:24:26 | 显示全部楼层
zhuoyue65 发表于 2017-10-10 15:16
哦,好的。
number=0,while停止这个是默认设置? 潜规则就是这么认定的咯? 还是怎么理解?

while循环的执行条件就是True的时候执行,False的时候终止。0的时候就是False啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-10 15:57:12 | 显示全部楼层
第一个问题你把代码写成下面这样就明白了
  1. temp = input('请输入一个整数:')
  2. number = int(temp)
  3. i = 1
  4. while number:
  5.     print(i)
  6.     i = i + 1
  7.     number = number -1
  8.     print('number =',number)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 23:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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