查看: 3854| 回复: 14
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Python/Perl] 新手请教个python问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
本帖最后由 xytan123 于 2012-6-5 13:41 编辑

编程区没权限发帖,就发这儿了

最近在看Byte of Python,按照上面的例子敲了break的实验代码。

就是看输入如果是quit就跳出循环,如果是其他字符串就打印长度,很基础的代码

  1. while True:
  2.     s=(input('enter something:\n'))
  3.     if s == 'quit':
  4.         break
  5.     else:
  6.         print('lenth is', len(s))
  7. print ('done')
复制代码
执行后,如果直接输入quit或其他字符串,会报错。

必须加上单引号,就是必须这样输入'quit','then',才能运行


我把代码中的单引号去掉,改成

  1. if s == quit:
复制代码
也只有输入quit不用加引号,其他字符要加引号,不加引号还是报错。

怎样才能像BOP上那样,输入不用加引号呢?是不是我win7系统的问题?





上一篇:Perl code/GMT求助
下一篇:5/14-5/20 CareerCup 5.2
🔗
 楼主| xytan123 2012-6-5 08:32:41 | 只看该作者
全局:
本帖最后由 xytan123 于 2013-5-20 15:33 编辑

这排版,怎么搞的...我在编辑模式看明明很整齐的。
顺便问下这个排版,我是直接插入的图片,没有敲回车,为什么会空这么多?

还有怎么用gist在论坛贴代码?它给我一个public clone url git://gist.github.com/2869199.git gist-2869199
然后怎么办?直接粘到帖子里么?


回复

使用道具 举报

🔗
neon 2012-6-5 09:26:59 | 只看该作者
全局:
raw_input?
回复

使用道具 举报

🔗
企鹅大哥 2012-6-5 10:27:09 | 只看该作者
全局:
是不是版本的问题?我在我机器上试了没问题,不需要加‘’
回复

使用道具 举报

🔗
zach 2012-6-5 11:18:35 | 只看该作者
全局:
不会用python。不过我觉得你应该把s转换成字符串格式的再做比较
回复

使用道具 举报

🔗
 楼主| xytan123 2012-6-5 12:50:48 | 只看该作者
全局:
neon 发表于 2012-6-5 09:26
raw_input?

谢谢!解决了!

不过为什么要是raw呢?raw_input是返回字符串,input是返回表达式的值,但这跟引号有什么关系呢?
回复

使用道具 举报

🔗
mimighost007 2012-6-5 12:56:09 | 只看该作者
全局:
本帖最后由 mimighost007 于 2012-6-5 12:57 编辑

python的官方文档很详细,去那里查就可以了
我查了一下,input()函数等于eval(raw_input(prompt)).
问题就在eval那里,eval的输入是一个表达式字符串,然后会返回这个表达式的值。
所以当你输入"then"的时候,eval("then")不会返回字符串'then',而是把’then‘作为一个表达式,去作用域里面查找名为'then'的变量,所以才会出现name ‘then’ not find这种错误。
而如果加了‘’那么执行的就是eval(" ' then ' ")。使用python自带的IDLE的话,直接输入字符串返回的应该就是字符串本身,那么此时就会返回'then'这个字符串了。如果在脚本中执行,就没有这种行为了。
根据这个原理来看,不加引号是不行的,但是你可以用raw_input,就一点儿问题也没有了。PS:这是在python 2.7中测试的,3.1不敢保证

评分

参与人数 1大米 +10 收起 理由
xytan123 + 10 谢解答!

查看全部评分

回复

使用道具 举报

🔗
 楼主| xytan123 2012-6-5 12:56:40 | 只看该作者
全局:
zach 发表于 2012-6-5 11:18
不会用python。不过我觉得你应该把s转换成字符串格式的再做比较

转换后就变成
if str(s) == 'quit'
没用。3#方法可解决

请教版主,为什么我在编辑模式看明明很整齐的,怎么一提交就变这么乱了?是论坛升级的原因么?
还有怎么用gist贴代码?
回复

使用道具 举报

🔗
 楼主| xytan123 2012-6-5 12:58:29 | 只看该作者
全局:
mimighost007 发表于 2012-6-5 12:56
python的官方文档很详细,去那里查就可以了
我查了一下,input()函数等于eval(raw_input(prompt)).
问题就 ...

原来如此!谢解答!
回复

使用道具 举报

🔗
neon 2012-6-5 13:27:53 | 只看该作者
全局:
python3以后raw_input()改成input了,我只用过2.x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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