2016-06-22 11 views
-1

私はサイト内のフォーラムを通してタプルを調べましたが、私の持つ同じ問題と一致する答えはありません。私はこのエラーが発生していると私はなぜわからない。どんな助けや説明も大歓迎です!私のコードが不必要に複雑であると推測していますか?Python-TypeErrorの新機能:タプル(「int」ではない)をタプルに連結することのみ可能

import time 
print "Welcome! I can tell you the year in which you will turn 100 years old!" 
name = str(raw_input ('What is your name? ')) 
age = int(raw_input ('What is your age? ')) 
birthday = str(raw_input ('Has your birthday passed for the year? (answer yes or no) ')) 
curYear = time.localtime(time.time()) 

if birthday == str('y') or str('yes') or str('Yes'): 
    bdayY = name + str(', ') + str('you will turn 100 years old in the year ') + (curYear + (int(100) - age)) + str('!') 
    print bdayY 
elif birthday == str('n') or str('no') or str('No'): 
    bdayN = name + str(', ') + str('you will turn 100 years old in the year ') + (curYear + (int(100) - (age + int(1)))) + str('!') 
    print bdayN 
else: 
    print "Invalid Answer" 

答えて

0

文字列リテラルでstrを呼び出す必要はありません。

curYearは、intに追加できないタイムタプルを返します。あなたは代わりに、これを持っている必要があります。

curYear = time.localtime(time.time()).tm_year 
#          ^

ifブロックはかなり読めません。あなたのpython 2でstring formattingを見てみるならば素敵だろう:私はあなたのコードをしようとしたとき

bdayY = '%s, you will turn 100 years old in the year %s!'%(name, (curYear + 100 - age)) 
0

あなたは年を除いて、文字列にすべてを投げ...、それは私が得た唯一のエラーです。

両方の割り当てに(curYear + (int(100) - age))の代わりにstr(curYear + (int(100) - age))と書いても問題ありません。

しかし、別々の変数で計算することをお勧めします。あなたは連結と追加を混ぜ合わせて、本当に簡単にエラーを作り、デバッグするのは非常に難しくなります。

関連する問題