本篇就通过一些示例看下两者之间的区别,如果

作者: 编程  发布:2019-09-03

python代码中境遇的主题材料及化解,python代码

 

一、针对raw_input输入的字符进行项目决断及转变:

          raw_input输入默以为字符,如若输入的是数字字符,想自行转换,即:输入为a,不做操作,假使输入为3,即转向为整数。

          可应用try..except..的措施,让程序将raw_input()输入的值调换为int,假如输入的是‘23’则一贯调换为数字23,假如输入的是‘xx’则会try退步然后运营except的一部分。

 

#!/usr/bin/python27
#_*_ coding:utf-8 _*_

def myint(s):
    try:
        eval(s)                       ###eval将字符串str当成有效的表达式来求值并返回计算结果
    except NameError:                 ###名称错误
        return s
    except SyntaxError:               ###语法错误        return s
    else:
        return eval(s)

a = raw_input('please input:')

print(myint(a))

 极其表明:

    1、加上NameError,能够免卫输入字符串出现的报错:


please input:aaa
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表达式来求值并回到总结结果
File "<string>", line 1, in <module>
NameError: name 'aaa' is not defined


 

 

 

    2、加上SyntaxError,能够堤防输入汉语出现的报错:


please input:中国
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表明式来求值并再次回到总结结果
File "<string>", line 1
中国
^
SyntaxError: invalid syntax


 

     

二、针对寄放在字典或列表中的普通话举行比对推断时,出现如下报错

ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)

1.缘故剖判:字符难点。。

2.消除办法:在出现难点的台本加上如下三行就可以:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

一、针对raw_input输入的字符进行项目判别及转变: raw_input输入默感到字符,假使输入的是数字字符...

 

python中Input和raw_input的区别

input('please input:')之后会回到贰个值,能够用tpye()查看她的门类,但是当大家输入字符串或然字符的时候, 要用双引号恐怕单引号包起来不然就能够报错

 

>>> var=input("please input:");

please input:12

>>> print var

12

>>> var=input("please input:");

please input:hello

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1, in <module>

NameError: name 'hello' is not defined

>>> print var

12

 

 

>>> var=input("please input:");

please input:'hello'

>>> print var

hello

 

input它会依据客户输入转变相应的种类,并且一旦要输入字符和字符串的时候必须要用引号包起来,而raw_input则是无论客户输入什么项目标都会转形成字符型.

input(please input:)之后会回来一个值,能够用tpye()查看她的类型,但是当大家输入字符串也许字符的时候, 要用双引号...

在版本2和版本3中的差距

二、针对存放在字典或列表中的中文实行比对判定时,现身如下报错

input会获得整数60
raw_input会获得字符串”57 3”

ascii codec can't decode byte 0xe8 in position 0:ordinal not in range(128)

 代码如下

 

一、raw_input
1.输入字符串

或

    try:
        eval(s)                       ###eval将字符串str当成有效的表达式来求值并返回计算结果
    except NameError:                 ###名称错误
        return s
    except SyntaxError:               ###语法错误        return s
    else:
        return eval(s)

a = raw_input('please input:')

print(myint(a))

fWeight = 0.0
9159.com,fWeight = float(raw_input("input your weightn"))
print 'your weight is %f' % fWeight

     if str.isdigit(s):                ###对输入是还是不是是数字举办推断
         s = int(s)                    ###假定出口的是个数字,则转向为整数品类
     else:
         s = s.decode('utf-8')         ###借使是字符串或汉字,则转向为unicode类型(首如果针对性汉字转化,汉字暗许是str)
     return s

如输入 “57 3”:

    1、加上NameError,可防止止输入字符串出现的报错:

 代码如下

1.缘故剖判:字符难题。。

input其实是由此raw_input来达成的,具体能够看python input的文书档案,原理很简单,就上面一行代码:

2.消除办法:在出现难题的本子加上如下三行就可以:

在Python 3.2.3中  input和raw_input 整合了,没有了raw_input


 代码如下


 代码如下


当输入为纯数字时

    2、加上SyntaxError,能够堤防输入汉语出现的报错:

def input(prompt):
    return (eval(raw_input(prompt)))

 

使用int数字型

 

nHex = int(raw_input('input hex value(like 0x20):n'),16)
print 'nHex = %x,nOct = %dn' %(nHex,nHex)

please input:aaa
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表明式来求值并回到计算结果
File "<string>", line 1, in <module>
NameError: name 'aaa' is not defined

# python guess.py
Hello! what is your name
111
Traceback (most recent call last):
  File "guess.py", line 12, in ?
    print ('well, ' myName ', i am thinking of a number between 1 and 23.')
TypeError: cannot concatenate 'str' and 'int' objects
行使不加引号的string
# python guess.py
Hello! what is your name
yang
Traceback (most recent call last):
  File "guess.py", line 10, in ?
    myName = input()
  File "<string>", line 0, in ?
NameError: name 'yang' is not defined
选用加引号的string
# python guess.py
Hello! what is your name
"yang"
well, yang, i am thinking of a number between 1 and 23.
Take a guess
10
your guess is too low
Take a guess
15
good job! you guess in 2 guesses!

     

4.输入16进制数据

 

nAge = int(raw_input("input your age plz:n"))
if nAge > 0 and nAge < 120:
    print 'thanks!'
else:
    print 'bad age'
print 'your age is %dn' % nAge

import sys
reload(sys)
sys.setdefaultencoding('utf-8')           #安装暗中同意编码

nID = ''
while 1:
    nID = raw_input("Input your id plz")
    if len(nID) != len("yang"):
        print 'wring length of id,input again'
    else:
        break
print 'your id is %s' % (nID)


5.输入8进制数据

一、针对raw_input输入的字符举办项目推断及调换:

3.输入浮点型

 极其表达:

二、input

          可使用try..except..的方式,让程序将raw_input()输入的值转变为int,如若输入的是‘23’则一向调换为数字23,假诺输入的是‘xx’则会try退步然后运维except的片段。

 代码如下

please input:中国
Traceback (most recent call last):
File "test.py", line 16, in <module>
print(myint(a))
File "test.py", line 6, in myint
eval(s) ###eval将字符串str当成有效的表明式来求值并赶回总计结果
File "<string>", line 1
中国
^
SyntaxError: invalid syntax

2.输入整数

 

 代码如下

          raw_input输入默认为字符,假使输入的是数字字符,想活动转换,即:输入为a,不做操作,如若输入为3,即转向为整数。

<span style="font-size:18px;">Python 2.3.4 (#1, Feb  2 2005, 11:44:13)
[GCC 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> user=raw_input("please input:")      
please input:wei                          #  raw_input 输入  字符串  成功
>>> user
'wei'
>>> user=input("please input:")         
please input:123                          #  input 输入  数字  成功(再次回到的是数字)
>>> user
123
>>> user=raw_input("please input:")
please input:111 <span style="white-space:pre">   </span>  #  raw_input 输入  数字  成功(再次来到的还是当成字符串)
>>> user
'111'
>>> user=input("please input:")
please input:wei                          #  input  输入字符串   退步
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "<string>", line 0, in ?
NameError: name 'wei' is not defined</span>

#!/usr/bin/python27
#_*_ coding:utf-8 _*_

def myint(s):

input重回的是数值类型,如int,float
raw_inpout重返的是字符串类型,string类型
当输入字符串时, input会计算在字符串中的数字表明式,而raw_input不会。

三、raw_input与input的区别

 代码如下

<span style="font-size:18px;">Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win
32
Type "help", "copyright", "credits" or "license" for more information.
>>> user=raw_input("please input:")                 #没有了raw_input
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
>>> user=input("please input:")
please input:wei
>>> user
'wei'
>>> user=input("please input:")                     #input的出口结果都以作为字符串
please input:123
>>> user
'123'</span>

地方的次第在实践时,无论选用数字或字符串,实行第10行的数码输入时,假如不加引号时会报错。实践进程如下:

nOct = int(raw_input('input oct value(like 020):n'),8)
print 'nOct = %o,nDec = %dn' % (nOct,nOct)
raw_input,默许是再次回到的体系是字符串型,若是想要重返别的类型的数额时,必要在讲话前增加相应的数据类型(如int 、float)。

再看贰个示范:

ython 2.7.3 同上

#!/usr/bin/python
# -*- coding: utf-8 -*-
# guess.py
import random
guessesTaken = 0
print ('Hello! what is your name')
#myName = raw_input()
myName = input()
number = random.randint(1, 23)
print ('well, ' myName ', i am thinking of a number between 1 and 23.')
while guessesTaken < 7:
    print ('Take a guess')
    guess = input()
    #guess = int(guess)
    guessesTaken = guessesTaken 1
    if guess < number:
        print ('your guess is too low')
    if guess > number:
        print ('your guess is too high')
    if guess == number:
        break
if guess == number:
    print ('good job! you guess in %d guesses!' %guessesTaken)
if guess != number:
    print ('sorry! your guess is wrong')

 代码如下

 代码如下

 代码如下

在使用python编纂交互式程序时,经常使用的五个里面函数是raw_input和input(最常用照旧input) ,本篇就因而一些演示看下两个之间的区分 。

本文由9159.com发布于编程,转载请注明出处:本篇就通过一些示例看下两者之间的区别,如果

关键词: 9159.com