鱼C论坛

 找回密码
 立即注册
查看: 1110|回复: 4

[已解决]005演示代码中声明问题的自我实践

[复制链接]
发表于 2018-6-12 12:45:24 | 显示全部楼层 |阅读模式

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

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

x
这是005课题的演示代码:


temp = input('请输入一个年份:')
while not temp.isdigit():
    temp = input("抱歉,您的输入有误,请输入一个整数:")

year = int(temp)
if year/400 == int(year/400):
    print(temp + ' 是闰年!')
else:
    if (year/4 == int(year/4)) and (year/100 != int(year/100)):
        print(temp + ' 是闰年!')
    else:
        print(temp + ' 不是闰年!')

我观察到一个问题。
先尝试这一段:
temp = input('请输入一个年份:')
temp= int(temp)
print(temp + ' 是闰年!')


当我想直接打出文字的时候出现   TypeError: unsupported operand type(s) for +: 'int' and 'str'

当我改为
temp = input('请输入一个年份:')
temp= str(temp)
print(temp + ' 是闰年!')

发现可以正确打出。
为什么明明输入的是数字,声明为Int,出错了,声明为str却能行了?教学演示代码中的声明int为什么就能打出“2012是闰年的。”字段呢?
最佳答案
2018-6-12 13:02:36
在Python中,print() 函数是非常不严格的,你可以输入整型,浮点型,字符串,甚至是列表等类型。
  1. >>> print(1)
  2. 1
  3. >>> print(0.1)
  4. 0.1
  5. >>> print([1,2,3])
  6. [1, 2, 3]
复制代码


但是它实质上都是将这些类型转换为字符串类型进行输入。

而你的代码中的主要问题,并不是因为print() 函数,而是因为 + 加法运算符(可能是叫这个名字把,我也忘记了)

在Python中可以通过 + 加号运算符让两个或以上的字符串拼接在一起
  1. >>> Kong = "我的名字"
  2. >>> "我是帅哥" + Kong
  3. '我是帅哥我的名字'
复制代码


但是必须两个或多个参数都统一为字符串类型,如果你加一个整数类型,计算机就搞不懂了,你到底要干嘛?
  1. >>> "我是帅哥" + 12345
  2. Traceback (most recent call last):
  3.   File "<stdin>", line 1, in <module>
  4. TypeError: must be str, not int
复制代码


所以我们后面会学到,%格式化运算符,将你想插入的内容,以一定格式输出。
  1. >>> "我是帅哥%d" % (12345)
  2. '我是帅哥12345'
复制代码


如果有疑问,请回复,如果回答有帮助,请设置为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-12 13:02:36 | 显示全部楼层    本楼为最佳答案   
在Python中,print() 函数是非常不严格的,你可以输入整型,浮点型,字符串,甚至是列表等类型。
  1. >>> print(1)
  2. 1
  3. >>> print(0.1)
  4. 0.1
  5. >>> print([1,2,3])
  6. [1, 2, 3]
复制代码


但是它实质上都是将这些类型转换为字符串类型进行输入。

而你的代码中的主要问题,并不是因为print() 函数,而是因为 + 加法运算符(可能是叫这个名字把,我也忘记了)

在Python中可以通过 + 加号运算符让两个或以上的字符串拼接在一起
  1. >>> Kong = "我的名字"
  2. >>> "我是帅哥" + Kong
  3. '我是帅哥我的名字'
复制代码


但是必须两个或多个参数都统一为字符串类型,如果你加一个整数类型,计算机就搞不懂了,你到底要干嘛?
  1. >>> "我是帅哥" + 12345
  2. Traceback (most recent call last):
  3.   File "<stdin>", line 1, in <module>
  4. TypeError: must be str, not int
复制代码


所以我们后面会学到,%格式化运算符,将你想插入的内容,以一定格式输出。
  1. >>> "我是帅哥%d" % (12345)
  2. '我是帅哥12345'
复制代码


如果有疑问,请回复,如果回答有帮助,请设置为最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-12 13:52:06 | 显示全部楼层
首先你看下代码
  1. temp = input('请输入一个年份:') #输入并赋值
  2. temp= int(temp) #把temp转换为整型并赋值
  3. print(temp + ' 是闰年!')#打印 整型+"是闰年!"   不是一个类型的输出 print()是没法拼接的
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-12 14:30:08 | 显示全部楼层
simplerjiang 发表于 2018-6-12 13:02
在Python中,print() 函数是非常不严格的,你可以输入整型,浮点型,字符串,甚至是列表等类型。

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

使用道具 举报

发表于 2018-6-12 15:26:27 | 显示全部楼层
判断闰年可以用一句代码就可以的:DPY = 365 if (year % 4 != 0 or (year % 100 == 0 and year % 400 !=0)) else 366
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-1 00:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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