鱼C论坛

 找回密码
 立即注册
查看: 1972|回复: 13

[已解决]005闲聊之Python的数据类型:有三个问题,若有前辈看到,望能解答。没人看到就算了

[复制链接]
发表于 2017-8-26 08:59:26 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ttyhtg 于 2017-8-26 16:13 编辑

需要注意的地方:
1、Python的一些数值类型:整型(整数)、浮点型(有小数)、布尔类型(特殊整型)、e记法(科学计数法);
2、
类型转换:int()整数,不能是中文英文等非数值类型,如果是转换浮点数则是截取整数而不是四舍五入,(到这里才知道前面习题的含义,前面其实是蒙的,哈哈)
float()浮点数,将整数转换为浮点数即小数,
str()字符串,将数值或者其他类型转换为字符串;
3、使用type()判断类型,也可以使用isinstance()来判断,例如a='小甲鱼';isinstance(a,str),可以写在同一行,使用分号隔开,前面有道习题答错了; 360截图-89299703.jpg


低级错误:大小写是不一样的,拼写不能错,英语还得补
360截图-87415453.jpg
最佳答案
2017-8-27 09:43:51
  1. while True:
  2.     temp = input('请输入年份:')
  3.     while not temp.isdigit():
  4.         temp = input("抱歉,您的输入有误,请输入一个整数:")
  5.     year = int(temp)
  6.     if year/400 == int(year/400):
  7.         print(temp + ' 是闰年!')
  8.     else:
  9.         if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  10.             print(temp + ' 是闰年!')
  11.         else:
  12.             print(temp + ' 不是闰年!')
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-8-26 16:08:52 | 显示全部楼层
本帖最后由 ttyhtg 于 2017-8-26 16:11 编辑

关于本节习题:
0、四舍五入原来那么简单,我还多此一举搞了那么多,
  1. a=float(input('请输入需要四舍五入的小数:'))
  2. b=int(a)
  3. x=a-int(a)
  4. if x<0.5:
  5.     print (b)
  6. else:
  7.     print (b+1)
复制代码

其实只需要这样就行了:
  1. a=5.9
  2. >>> b=int(a+0.5)
  3. >>> b
复制代码

哎呀,明明是程序为了简洁的,我居然给搞复杂了,思路就不对,慢慢来,加油,相信自己。
1、关于猜大小的判断数值类型的不知道那个isdigit()的内置函数,怪不得怎么试都不行。
不过这里有两个小问题:一个是关于那个“temp.isdigit()”里面那个“.”是什么意思,一个是那个“times=times-1”的位置是不是关系不太大,试了好几个地方都不影响。
QQ截图20170826141408.png
2、那个判断闰年的程序,如果重复执行判断怎么写代码,也就是说有两个while,百度了一圈也没有找到答案,主要是看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 16:17:11 | 显示全部楼层
第一个问题,你要使用哪那函数,而且是给temp用,所以两个之间得有一架桥,那个点就是用于连接
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 16:17:48 | 显示全部楼层
第二个问题,对的,只要猜错了减一就行

评分

参与人数 1荣誉 +5 收起 理由
ttyhtg + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-26 16:18:30 | 显示全部楼层
发一下第三个问题的原始代码

评分

参与人数 1荣誉 +5 收起 理由
ttyhtg + 5

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 09:40:18 | 显示全部楼层
新手·ing 发表于 2017-8-26 16:18
发一下第三个问题的原始代码
  1. temp = input('请输入年份:')
  2. while not temp.isdigit():
  3.     temp = input("抱歉,您的输入有误,请输入一个整数:")
  4. year = int(temp)
  5. if year/400 == int(year/400):
  6.     print(temp + ' 是闰年!')
  7. else:
  8.     if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  9.         print(temp + ' 是闰年!')
  10.     else:
  11.         print(temp + ' 不是闰年!')
复制代码

怎么加个while使其每次判断完之后再次回到待输入状态继续输入判断呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 09:43:51 | 显示全部楼层    本楼为最佳答案   
  1. while True:
  2.     temp = input('请输入年份:')
  3.     while not temp.isdigit():
  4.         temp = input("抱歉,您的输入有误,请输入一个整数:")
  5.     year = int(temp)
  6.     if year/400 == int(year/400):
  7.         print(temp + ' 是闰年!')
  8.     else:
  9.         if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  10.             print(temp + ' 是闰年!')
  11.         else:
  12.             print(temp + ' 不是闰年!')
复制代码

评分

参与人数 1鱼币 +5 贡献 +3 收起 理由
ttyhtg + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 09:44:18 | 显示全部楼层
需要加个退出吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 12:22:45 | 显示全部楼层

我了个去,了然,逻辑思维还是没有建立起来,这也搜到了,也试了,只不过多了一句,纠结了老半天,这下懂了,谢谢,谢谢。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 12:23:22 | 显示全部楼层

加一个,在哪里加?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 12:42:52 | 显示全部楼层
ttyhtg 发表于 2017-8-27 12:23
加一个,在哪里加?

whileTrue:
if temp.upper() == "Q":
    #  break结束循环
    break

评分

参与人数 1鱼币 +5 贡献 +2 收起 理由
ttyhtg + 5 + 2

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 15:57:22 | 显示全部楼层
l1993520 发表于 2017-8-27 12:42
whileTrue:
if temp.upper() == "Q":
    #  break结束循环

非常感谢,这样写标准不?前后顺序啥的
  1. while True:
  2.     temp = input('请输入年份:')
  3.     if temp.upper() == "Q":
  4.         break
  5.     while not temp.isdigit():
  6.         temp = input("抱歉,您的输入有误,请输入一个整数:")
  7.     year = int(temp)
  8.     if year/400 == int(year/400):
  9.         print(temp + ' 是闰年!')
  10.     else:
  11.         if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  12.             print(temp + ' 是闰年!')
  13.         else:
  14.             print(temp + ' 不是闰年!')
复制代码

另外,那个.upper()不使用也不影响效果,即这样:
  1. while True:
  2.     temp = input('请输入年份:')
  3.     if temp== "Q":
  4.         break
  5.     while not temp.isdigit():
  6.         temp = input("抱歉,您的输入有误,请输入一个整数:")
  7.     year = int(temp)
  8.     if year/400 == int(year/400):
  9.         print(temp + ' 是闰年!')
  10.     else:
  11.         if (year/4 == int(year/4)) and (year/100 != int(year/100)):
  12.             print(temp + ' 是闰年!')
  13.         else:
  14.             print(temp + ' 不是闰年!')
复制代码

另外将Q替换成中文退出,也一样的效果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-27 17:33:02 | 显示全部楼层
ttyhtg 发表于 2017-8-27 15:57
非常感谢,这样写标准不?前后顺序啥的

另外,那个.upper()不使用也不影响效果,即这样:

对的,可以了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-27 20:59:24 | 显示全部楼层

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 19:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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