一个Python的小程序输出结果不对解决方法

一个Python的小程序输出结果不对
age=raw_input('Please input you age:')
if age>=18:
print 'you\'re adult!'
else:
print 'you\'re teenager!'


输入小于18的数却没有输出正确结果?!
------解决思路----------------------

age=int(raw_input('Please input you age:'))
if age>=18:
    print 'you\'re adult!'
else:
    print 'you\'re teenager!'

------解决思路----------------------
你得到的age是字符串 ,要转化成整型再比较
------解决思路----------------------
或者使用input替代raw_input
详见  http://blog.****.net/xmnathan/article/details/38108587
------解决思路----------------------
同楼上
raw_string返回的是一个字符串 
需要转换成int后和18比较
------解决思路----------------------
引用:
Quote: 引用:


age=int(raw_input('Please input you age:'))
if age>=18:
    print 'you\'re adult!'
else:
    print 'you\'re teenager!'

我才学Python,不是很了解。话说Python不是动态语言吗?


没有像java /C++一样  要求声明age类型 就已经算动态语言了 
StringBuffer age = raw_input(xxx)
这是java的大概行为
问题是就算是动态语言 也没法推演出 你的期望行为啊
比如 
'18' 和 18怎么比较呢
再比如 
'18' + 18 结果到底是 1818 还是36呢

------解决思路----------------------
引用:
Quote: 引用:


age=int(raw_input('Please input you age:'))
if age>=18:
    print 'you\'re adult!'
else:
    print 'you\'re teenager!'

我才学Python,不是很了解。话说Python不是动态语言吗?


python 既是动态类型语言 (因为它不使用显示数据类型声明),
又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了)
------解决思路----------------------
引用:
Quote: 引用:

同楼上
raw_string返回的是一个字符串 
需要转换成int后和18比较

请问您Python有类似Eclipse、VS之类的IDE吗,交互式的命令行方式怎么能开发大型程序呢?

Eclipse + Pydev插件 可以开发python
------解决思路----------------------
引用:
Quote: 引用:

同楼上
raw_string返回的是一个字符串 
需要转换成int后和18比较

请问您Python有类似Eclipse、VS之类的IDE吗,交互式的命令行方式怎么能开发大型程序呢?

eclipse + pydev
Eric4
emacs/vim + jedi
sublime 
怎么定义大型程序? 十几万行的代码算吗? Django这样的差不多30万行吧 
开发的时候没有人用交互式写啊  跟VS一样 直接写 无非是VS需要编译 这个不需要
精通语言有静态语言的好处 编译器会替你检测语法错误 动态语言的特点就是糙快好省 拿来就写代码
------解决思路----------------------
还可以用pycharm

------解决思路----------------------
引用:
Quote: 引用:


age=int(raw_input('Please input you age:'))
if age>=18:
    print 'you\'re adult!'
else:
    print 'you\'re teenager!'

我才学Python,不是很了解。话说Python不是动态语言吗?

help 一下, 虽然是动态语言,但是raw_input返回的是string
------解决思路----------------------
python 既是动态类型语言 (因为它不使用显示数据类型声明),
又是强类型语言 (因为只要一个变量获得了一个数据类型,它实际上就一直是这个类型了) 

我赞同。
------解决思路----------------------
age = eval(input("Please input you age:"))
    if age >= 18:
        print("you\'re adult!")
    else:
        print("you\'re teenager!")

利用eval函数江输入的字符串装换成数字,如果输入错误会提示异常!!
------解决思路----------------------
引用:
age = eval(input("Please input you age:"))
    if age >= 18:
        print("you\'re adult!")
    else:
        print("you\'re teenager!")

利用eval函数江输入的字符串装换成数字,如果输入错误会提示异常!!
滥用eval,这是找抽啊!
------解决思路----------------------
引用:
Quote: 引用:

Quote: 引用:

age = eval(input("Please input you age:"))
    if age >= 18:
        print("you\'re adult!")
    else:
        print("you\'re teenager!")

利用eval函数江输入的字符串装换成数字,如果输入错误会提示异常!!
滥用eval,这是找抽啊!

那应该怎么说?


你没有滥用eval,而是实际上input内部已经默认调用了一次input,你多调用了一次eval


我在#3 已经和你说了   http://blog.****.net/xmnathan/article/details/38108587

正确判定输入能否成功执行int()的代码

inStr=raw_input('Please input you age:')
while not inStr.isdigit():     #判定输入的是整数字符串
    inStr = raw_input('Error. Please input you age again:')  //输入错误 要求用户重新输入
age = int(inStr)
if age>=18:
    print 'you\'re adult!'
else:
    print 'you\'re teenager!'



#测试结果
>>> 
Please input you age:242fds
Error. Please input you age again:3253453dasada
Error. Please input you age again:12.32
Error. Please input you age again:19
you're adult!