2017-04-17 7 views
0

タイトルにはすべてが書いてありますが、私はコードを教えてくれます。年齢計算機を作ろうとしていますが、エラー "行"を作るときにいくつかの問題があります

stop=0 
while stop != 'q': 
print("Age calculator") 
name = input("Name: ") 
print("Type in your age") 
age = input("Age: ") 

months = age * 12 
days = age * 365 
weeks = age * 52 
hours = days * 24 
minutes = age * 525948 
seconds = age * 31556926 

if type(age) == int: 
    print (name, "lives for", months, "months", weeks, "weeks", days, "days", hours, "hours", minutes, "minutes and", seconds, "seconds") 

else: 
    print("Please type in a number") 


print() 
print("Try again? Press ENTER") 
print("Quit? Press 'q' and then ENTER") 
print() 
stop = input() 

そうなものは数週間、私はそれはあなたに数ヶ月を与えたいということです、日数など 今、私はこれを行う方法を知っているが、今私が言うのラインを作るためにしようとしている:入力してください数字でユーザーが数字の代わりに文字を入力する場合。数字を入力するたびに上記のコードを実行すると、「数字を入力してください」という行が表示され、文字を入力すると同じコードが入力されます。

私はここで間違っていますか?

+0

「月」、「日」などの値はどのように割り当てられましたか? –

+0

それはどういう意味ですか?申し訳ありません、私はPythonを始めました。 – Dylan

+0

'input()'は、入力が数字か文字のセットであっても、文字列を返します。だからあなたの 'if(age)== int'が失敗するのです。 –

答えて

0

Input()ステートメントはすべてのタイプの入力を文字列として受け入れます。 "1"のような文字列なので、与えられたinput()をint()として型キャストする必要があります。それを別にキャストするか、input()ステートメントで直接型キャストすると例外タイプエラーが発生します。プログラム。したがって、try catchを使用するとコードが作成されます。

status="" 
try: 
    while True: 
      print("Age calculator") 
      name = input("Name: ") 
      print("Type in your age") 
      age = input("Age: ") 
      age=int(age) 
      months = age * 12 
      days = age * 365 
      weeks = age * 52 
      hours = days * 24 
      minutes = age * 525948 
      seconds = age * 31556926 
      print (name, "lives for", months, "months", weeks, "weeks", days, "days", hours, "hours", minutes, "minutes and", seconds, "seconds") 
     print("Try again? Press ENTER") 
     status = input("Quit? Press 'q' and then ENTER") 
     if status = "q": 
       break # terminates program if "q" is entered. 
except TypeError: 
      print("Please type in a number for age") 
      continue #runs program till "q"is passed as age. 
except: 
    raise # this raises error if something goes wrong 
+0

助けてくれてありがとう! – Dylan

1

あなたが入力を読み込むとき、それは常に文字列として読み込まれます。あなたはユーザーではなく数の文字を入力した場合、これはあなたのコードを変更することなく、その周りを取得するには、壊れることをあまりにも多くのあなたは、彼らのように、あなたの入力文を保つことができる

int(input("Age: ")) 

のような注意をintに、あなたの入力をキャストする必要がありますif文を次のように変更します。

try: 
    age = int(age) 
    print statement 

except ValueError: 
    print("Please type in a number") 

心に留めておくべきもう一つの重要なことは、それがintに割り当てられる前に、あなたのコードの中であなたは演算子は、年齢に作用していることで、

age * 12 

が実際にあなたのSTR( '555555555555を与える意味渡された年齢が5の場合は、数値ではなく)。これを修正するには、数値が整数に変換された後に呼び出されるように、ステートメントをtryに移動する必要があります。

+0

助けてくれてありがとう! – Dylan

関連する問題