鱼C论坛

 找回密码
 立即注册
查看: 1847|回复: 11

[已解决]python学习课后题困惑

[复制链接]
发表于 2017-12-6 00:28:43 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 jcx1117 于 2017-12-6 00:29 编辑

问题一:
课后题:
print ('__输入符合条件的数字__')
temp = input ("请输入1-100之间的数字:")
number = int(temp)
if 0 <= number <= 100:
    print ("Good!")
else:
    print ("print again!")

输入100.1就报错,这是为什么?

问题二:
课后题
print ('___计算n年的秒数___')
temp = input("请输入需要计算多少年的秒数:")
year = int(temp)
DaysPerYear = year * 365
HoursPerDay = DaysPerYear * 24
MinutesPerHour = HoursPerDay * 60
SecondsPerMinute = MinutesPerHour * 60
print(DaysPerYear)
print(HoursPerDay)
print(MinutesPerHour)
print(SecondsPerMinute)
str(SecondsPerMinute)
print("共计" + SecondsPerMinute + "秒")

最后报错,可是我已经把SecondsPerMinute转换成字符串型,按理可以完成拼接啊,求解!
最佳答案
2017-12-6 13:20:02
jcx1117 发表于 2017-12-6 13:10
那意思是不管我输入什么,temp都是字符串呢?那为什么我输入10,代码就可以执行?感谢解惑

因为在python3里int('10')是可以的,int('10.1')是不可以的,
字符串里面是浮点型数字的话,用float(temp),然后再int(float(temp))就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-12-6 00:41:48 From FishC Mobile | 显示全部楼层
第二个转型后你没接收
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 00:52:59 | 显示全部楼层
本帖最后由 jcx1117 于 2017-12-6 00:59 编辑
chakyam 发表于 2017-12-6 00:41
第二个转型后你没接收


搞定了,非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 00:55:34 | 显示全部楼层
本帖最后由 jcx1117 于 2017-12-6 01:22 编辑
jcx1117 发表于 2017-12-6 00:52
第一个问题,有没有人可以帮助解决下困惑。

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

使用道具 举报

 楼主| 发表于 2017-12-6 00:57:06 | 显示全部楼层
chakyam 发表于 2017-12-6 00:41
第二个转型后你没接收

搞定了,非常感谢。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 01:48:18 | 显示全部楼层
本帖最后由 y2kfdjk 于 2017-12-6 01:54 编辑

第一个。根据报错信息来看,按我的理解是说整型只能是十进制的数字组成。所在你输入的字符串是浮点型得先转换,再转成整型,在 number = int(temp)前面加一句 temp = float(temp)
或者你加个限制条件,检查输入的字符串只能是数字组成。用字符串的 isdigit() 方法。 if not temp.isdigit() : 返回重新输入
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 10:20:03 | 显示全部楼层
字符串里的数字是浮点型,即你输入10.1时,temp = '10.1',可以使用6楼的方法进行转换。
这样是可以的:int('10')
但是这样不行:int('10.1')
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 11:22:44 From FishC Mobile | 显示全部楼层
°蓝鲤歌蓝 发表于 2017-12-6 10:20
字符串里的数字是浮点型,即你输入10.1时,temp = '10.1',可以使用6楼的方法进行转换。
这样是可以的:in ...

可是int()不就是为了将浮点型转换成整形吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 11:26:22 | 显示全部楼层
第一个类型是整数型,必须输入整数,你不能输入100.1,这个是有浮点的叫浮点型数值
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 11:35:24 | 显示全部楼层
jcx1117 发表于 2017-12-6 11:22
可是int()不就是为了将浮点型转换成整形吗?

可是temp不是浮点型啊,它是一个字符串,你输入10.1,temp = ‘10.1’,这个字符串里面的数字是浮点型,不是temp是浮点型。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-6 13:10:50 From FishC Mobile | 显示全部楼层
°蓝鲤歌蓝 发表于 2017-12-6 11:35
可是temp不是浮点型啊,它是一个字符串,你输入10.1,temp = ‘10.1’,这个字符串里面的数字是浮点型, ...

那意思是不管我输入什么,temp都是字符串呢?那为什么我输入10,代码就可以执行?感谢解惑
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-6 13:20:02 | 显示全部楼层    本楼为最佳答案   
jcx1117 发表于 2017-12-6 13:10
那意思是不管我输入什么,temp都是字符串呢?那为什么我输入10,代码就可以执行?感谢解惑

因为在python3里int('10')是可以的,int('10.1')是不可以的,
字符串里面是浮点型数字的话,用float(temp),然后再int(float(temp))就可以了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-28 03:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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