-1

以下のコードでは、文字列を整数に正しく変換できません。

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'

1 つの関数ですべてを実行しようとしても、同じ効果があります。

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)

私は何を間違っていますか?

4

1 に答える 1

2

最初の例で convertStr() 関数からの戻り値を使用するのを忘れました:

lang = convertStr(lang)

2番目の例ret = int(lang)では、その前に到達できませreturn langん。

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)
于 2012-11-15T15:13:53.963 に答える