ゾディアックカレンダーのサンプル中の日付の予期しない入力値検出

ヒョードルPeplin:

私は月の入力月と日によって判断干支のカレンダーを作成することであるPythonでタスクをやっています。

私は、しかし、私はI入力間違った月名または存在しない日付場合は、問題を解決する方法が分からない、成功したカレンダーを作りました。

異なる階層を作成するために、各星座の下で私が書いた:私は物事のトンを試してみましたelse: print ('Entering an incorrect date')私もに登録しようとしたif day <0 and day> 31 or month! = 'March' or month! = 'April'など、...それは最終的には巨大な役に立たない機能であることが判明し、そして何もどちらか働きました。

私は、1行のソリューションは、日<0と> 31と間違った月の名前を検出するためにここに存在していることを感じるが、私はそれを理解することはできません。誰かが助けることができる、してください?

month = input('Enter the month: ')
day = int(input ('Enter the date of month: '))
if day >= 21 and day <= 31 and month.lower() == 'march' or day >=1 and day <= 19 and month.lower() == 'april':
    zodiac='Aries'
if day >= 20 and day <= 30 and month.lower() == 'april' or day >=1 and day <= 19 and month.lower() == 'may':
    zodiac='Taurus'
if day >= 21 and day <= 31 and month.lower() == 'may' or day >=1 and day <= 20 and month.lower() == 'june':
    zodiac='Gemini'
if day >= 21 and day <= 30 and month.lower() == 'june' or day >=1 and day <= 22 and month.lower() == 'july':
    zodiac='Cancer'
if day >= 23 and day <= 31 and month.lower() == 'july' or day >=1 and day <= 22 and month.lower() == 'august':
    zodiac='Leo'
if day >= 23 and day <= 31 and month.lower() == 'august' or day >=1 and day <= 22 and month.lower() == 'september':
    zodiac='Virgo'
if day >= 23 and day <= 30 and month.lower() == 'september' or day >=1 and day <= 22 and month.lower() == 'october':
    zodiac='Libra'
if day >= 23 and day <= 31 and month.lower() == 'october' or day >=1 and day <= 21 and month.lower() == 'november':
    zodiac='Scorpio'
if day >= 22 and day <= 30 and month.lower() == 'november' or day >=1 and day <= 21 and month.lower() == 'december':
    zodiac='Sagittarius'
if day >= 22 and day <= 31 and month.lower() == 'december' or day >=1 and day <= 19 and month.lower() == 'january':
    zodiac='Capricorn'
if day >= 20 and day <= 31 and month.lower() == 'january' or day >=1 and day <= 18 and month.lower() == 'february':
    zodiac='Aquarius'
if day >= 19 and day <= 28 and month.lower() == 'february' or day >=1 and day <= 20 and month.lower() == 'march':
    zodiac='Pisces'  
print('Conclusion:')
print(zodiac)
ボブ・スミス:

あなたはに見たいと思うかもしれませんdatetime型のモジュール。これを使うと、簡単に余分なif文を必要とせずに日付と時刻間の比較を行うことができます。

例えば、1のような何かをした場合:

import datetime
dt = datetime.datetime.today()
print dt.month

次に、あなたが得るでしょう:

3

だからではなく、文字列形式で数ヶ月のために入力して読んで、あなたは、単に作成するための月の数を求めることができる日時より簡単にオブジェクトを。また、あなたはこのような何かを行うことができます:

month_input = input("What is the month?")
months = ["january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december"]
month_input = month_input.lower().strip() #convert to lowercase and remove whitespace
month_num = months.index(month_input) + 1 #Add one because lists start at index 0

そうすれば、あなたは使用する月の数を取得することができます日時そこからあなたの比較と評価を行うためにオブジェクトを。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=373160&siteId=1