- 我爱编程挑战赛
- 2020-01-06 19:55:27 @
如果设置python,输入如下代码:
a=int(input())
if a%40==0:
b=a/40
print(b)
else:
e=a/40
c=int(e)
d=c+1
print(d)
系统显示accepted
但如果换成python3,则无法通过(AC:6;WA:4)
而如果输入如下代码:
a=int(input())
if(a%40==0):
print(a//40)
else:
print(a//40 + 1)
无论是python还是python3都显示accepted
请问这是为什么?二者区别在哪里?
1 条评论
-
田佳禾 LV 8 @ 2020-01-08 16:11:30
经过查找资料,我学习到了python2和python3的如下区别:
以下每一行每一项分别对应:区别 python2 python3 说明
print print 'abc' print('abc') print从语句变为函数
加不加括号决定了函数和语句的区别,在类里是属性和方法的区别。
除以 1/2=0 1/2=0.5 1//2=0 python2 / 和python3 // 意义均为除以后保留整数
py2的除法中不是浮点数则只返回商,py3除法返回值正常。*
range xrange range 重命名
不等于 < >或!= !=
运行程序 识别相同目录下普通文件夹中的模块 识别文件夹标识后的包中的模块
输入 raw_input('') input('')
默认编码 ASCII utf-8 py2出现中文时需要在第一行加上#coding=utf-8,而py3不需要。
与MySQL的交互 安装MySQLdb pymsql
urllib urllib2或urllib3 urllib3
打开或创建文件 open()或file() open()
队列 Queue queue
缩进机制 1个tab键和8个space等价 1个tab只能找另外一个tab替代 py2可以同时允许tab和space在代码中共存,而py3不允许。
加密 import md5或者import hashlib import hashlib
返回对象 列表 容器 py3可以使用迭代器取出,有的也可以直接list()强制转换.
如dictionary关联的keys()、values()、items(),zip(),map(),filter()
库的名称 _winreg
ConfigParser
copy_reg
SocketServer
repr winreg
configparser
copyreg
sochetserver
reprlib从表中加粗部分可以获知这个问题的原因。
综合上面的对比分析,我发现:
1.在Python2版本有些死板,而python3越来越摆脱关于程序的死板,有着一些类似“智能”的变通;
2.py2兼容能力比较强,有些情况下两种表达方式都可以被py2接受;py3表示方法更单一,涵盖更多,但py2有些表示就不再适用了,如:Python3中range的机制也进行修改并提高了大数据集生成效率,即涵盖了xrange的功能。也正是因此,在做题过程中,有些表达python和python3都可以认可,而有的只有python接受;
3.py3对py2的编码方式进行了优化,比如输入中文很方便;且py3比py2编写起来更加方便快捷,比如:分子小于分母的正整数相除时得到的都是0,但是在3.X里面已经没有了这方面的问题;又比如:减少了大写字母和符号_的使用。
- 1
信息
- ID
- 1010
- 难度
- 8
- 分类
- (无)
- 标签
- (无)
- 递交数
- 2126
- 已通过
- 186
- 通过率
- 9%
- 上传者