0
year = raw_input("What year were you born?: ")

def age_calc(f):
    print "To calculate your age, I will subtract the current year from your birthyear!"
    return 2011 - "%d" % (f)

age = age_calc(year)

print age

これは私が書いたコードの練習問題であり、これは私が回避できないエラーです...

File "agecalc.py", line 7, in <module>
  age = age_calc(year)
File "agecalc.py", line 5, in age_calc
  return 2011 - "%d" % (f)
TypeError: int argument required
4

2 に答える 2

4

問題は、計算で文字列と数値を混同していることです。元のコードでは

return 2011 - "%d" % (f)
         ^      ^
         |      |
     integer   string

文字列が整数から減算されています-これにより、エラーメッセージが表示されます。TypeError: int argument required

改善されたバージョンは次のとおりです。

def age_calc(yr):
    print "To calculate your age, I will subtract the current year from your birthyear!"
    return 2011 - yr

year = int(raw_input("What year were you born?: ")) # convert string to int
age = age_calc(year)

print age

ユーザー入力を文字列からint入力を求める場所に変換してから、文字列と数値ではなく数値を使用してすべての計算を実行することに注意してください。

元のコードでは、文字列をに渡し、age_calc()それを使用して数値2011から減算していました。これで整数をに送信し、age_calc()別の整数から整数を減算しても問題ありません(2011)。

yrまた、関数の引数には、ではなく、もう少しわかりやすい識別子を使用しましたf

于 2012-07-03T15:53:00.903 に答える
1

%dfあなたの場合は文字列ですが、整数になりたいです。

`return 2011 - "%d" % (f)` 

また、2011 - "%d" % (f)数値から文字列を減算しようとしていますが、これも間違っています。

コードの作業バージョン:

year = int(raw_input("What year were you born?: ")) #convert to int using int()

def age_calc(f):
    print "To calculate your age, I will subtract the current year from your birthyear!"
    return 2011 - f # or return "{0}".format(2011-f)  if you want to return a string 

age = age_calc(year)

print age
于 2012-07-03T15:52:56.310 に答える