1

このコードをより効率的にする方法があるかどうか疑問に思っていましたか? 私はPythonとプログラミング全体が初めてだと言っているだけです。どんなヒントも素晴らしいでしょう。よろしくお願いします。

これが私がタスクを取得した場所です:http://www.101computing.net/how-old-is-your-cat/

このプログラムは、猫の年齢を人間の年齢に変換するだけです。

convertedAge = 0
stage = 0

question = input("Is you cat under 1 year old?.. Y/N")

if ((question.lower() == "y") or (question.lower() == "yes")):
  ageOfCat = int(input("How old is your cat (in months)?")) #cat < 1 year old
  if 1 <= ageOfCat <= 2:
    convertedAge = "9 to 10 months"
  elif ageOfCat == 3:
    convertedAge = "2 to 3 years"
  elif ageOfCat == 4:
    convertedAge = "5 to 6 years"
  elif ageOfCat == 5:
    convertedAge = "8 to 9 years"
  elif ageOfCat == 6:
    convertedAge = "10 years"
  elif 7 <= ageOfCat <= 8:
    convertedAge = "13 years"
  elif 8 <= ageOfCat <= 11:
    convertedAge = "14 years"
  print("In human years your cat is the equivalent of " + str(convertedAge) + " old.")
else:
  ageOfCat = int(input("How old is your cat (in years)?")) #cat > 1 year old
  if ageOfCat == 1:
    convertedAge = 15
  elif ageOfCat == 2:
    convertedAge = 15 + 9
  else:
    convertedAge = 15 + 9 + ((ageOfCat-2) * 4)
  print("In human years your cat is the equivalent of " + str(convertedAge) + " years old.")
4

2 に答える 2

4

まず、辞書を使用して if/else ブロックをすべて削除してみてください。

convertedAges = {
    1: "9 to 10 months",
    2: "9 to 10 months",
    3: "2 to 3 years", # and so on
}

次に、辞書を使用します。

convertedAge = convertedAges[ageOfCat]

正直なところ、特に始めたばかりの場合は、読みやすさに重点を置く必要があります。あなたの最初のifように

if question.lower() in "yes": # "y" is in "yes", so is "yes" (a string is a substring of itself)

同じ(または非常によく似た)セリフを何度も繰り返していることに気付き始めたら、立ち止まって、何を達成しようとしているのかを考えてください。

于 2016-03-25T01:48:47.307 に答える