【问题标题】:Convert string input to integer [closed]将字符串输入转换为整数 [关闭]
【发布时间】:2012-11-04 04:56:09
【问题描述】:

我无法使用下面的代码将字符串正确转换为整数。

我将lang 输入作为字符串。我想接受任何输入,因为如果我将输入限制为整数,那么用户输入的任何字母都会导致错误。

这段代码:

lang=[]
def chooseLang():
    global lang
    while lang !='1' and lang != '2':
        print ('Select (1 or 2):')
        lang=input()
    return lang

def convertStr(lang):
    ret=int(lang)
    return ret   
#-----------------------Program-----------------------
chooseLang()
convertStr(lang)

c=2+lang
print (c)

... 导致此错误:

in <module> c=2+lang
TypeError: unsupported operand type(s) for +: 'int' and 'str'

尝试在一个函数中完成所有操作具有相同的效果:

lang=[]    
def chooseLang():
    global lang
    while lang !='1' and lang != '2':
        print ('Select (1 or 2):')
        lang=input()
    return lang
    ret=int(lang)

chooseLang()
c=2+lang
print (c)

我做错了什么?

【问题讨论】:

  • 为什么一开始就以lang 作为一个空列表?你为什么要把它变成全球性的?在检查字符串是"1" 还是"2" 之后,调用int() 怎么可能会出错?

标签: python string python-3.x int converter


【解决方案1】:

在第一个示例中,您忘记使用 convertStr() 函数的返回值:

lang = convertStr(lang)

在您的第二个示例中,ret = int(lang) 无法访问,因为它之前的 return lang。

Example

def choose_lang():
    lang = None # NOTE: this `lang` has nothing to do with the global `lang`
    while True: 
        try:
            lang = int(input("select (1 or 2)"))
        except ValueError:
            pass
        if lang not in [1, 2]:
            print("\ntry again")
        else:
            break
    return lang

lang = choose_lang()
c = 2 + lang
print(c)

【讨论】:

  • 不错的选择,感谢这个方法!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 1970-01-01
  • 2013-12-29
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多