设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 21664|回复: 1
打印 上一主题 下一主题

【Python 第63课】python 2到3的新手坑

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2013-12-14 17:31:03 |显示全部楼层 |倒序浏览
py63h.jpg

昨天挖了个坑,论坛上已经有不少解答了,还有c语言的版本。今天先不填坑,让题目再飞一会儿,没做的同学可以周末试着写写玩儿。

周三的时候去参加“编程一小时”活动,过程中发现,python版本2和版本3之间一些小改动把很多人都给坑了,花了大量的时间在这件事情上。所以今天来讲一下最大的两个坑:print 和 input。

我们在课程最开始的时候就讲过 print,在版本2的使用方法是:
print 'this is version 2'

也可以是
print('this is version 2')

但到了3,就只能加上括号,像一个函数一样来使用 print:

print('this is version 3')

假如你看了基于2的教程(比如我写的),然后又装了python 3,可能就会奇怪为什么完全照着写,结果却不一样。


而 input 就更绕一点。2里面有两个用来从命令行接受输入的函数:input 和 raw_input。

value = input()

input 接收的是一个值或变量,也就是说,你如果输 123,程序接收到的就是整数 123,你输 True,就是 bool 值 True。如果你输了 abc,程序会认为这是一个叫做 abc 的变量,而假如你没有定义过这个变量,就会报错。

所以,当你想用 input 得到一段文字的话,必须把文字写在引号 "" 或 '' 中。

text = raw_input()

raw_input 接收的则是你输入的字符串,而不管你输的是什么内容。

在版本3里,为了减少混乱,这两种输入方式被合并了。只是合并的方式又坑了新手:它保留了 input 这个名字和 raw_input 的效果。3里只有input函数,它接收你输入的字符串,不管你输的是什么。

text = input()

这种情况下,不管你是看着3的教材用2,还是看着2的教材用3,都会踩到这个坑。

那么在3里,如何像2一样得到用户输入的一个值呢?方法是 eval():

value = eval(input())


#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2017-3-3 16:26:18 |显示全部楼层
brahmagupta 发表于 2017-3-2 18:11
“如果你输了 abc,程序会认为这是一个叫做 abc 的变量,而假如你没有定义过这个变量,就会报错”。。。
我 ...

确实如此
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-5-12 18:14 , Processed in 0.019738 second(s), 31 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部