A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
別に日時計算するわけでは無いので、datetimeモジュールを使う意味は無いように思うのですが。
干支:
正式には十干と十二支合せた60通りのことを言うそうで。
60通りなので、「年」を60で割った余り(0~59)を対応する干支と結び付ければいい。
整数と文字列を関連付けるなら、リストやタプルが好都合。
60も用意するのが面倒なら、10で割った余りから十干、12で割った余りから十二支を求める。
星座:
これも、いろんな流派があるようですが、12宮だとすると。
基本は「月」と星座が結びついています。上でやったようなリストやタプルで変換表を作ればよいでしょう。
ただ、「日」によっては「次の月の星座」扱いになるので、「次の月扱いになる日付」のテーブルも用意して、その日より前か後かによって条件分岐するようにします。
プログラムの作りかた:
それぞれのやりかたが決まったのですから、それを「Python」という言葉に翻訳するだけです。
No.2
- 回答日時:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### No.1 はちょっとアルゴリズム書き間違えてたトコがあるんで、修正版です。
### http://www.python.jp/doc/2.5/lib/node85.html を参照
from datetime import date
from time import strptime
class seizaAndEto:
def __init__(self):
### http://ja.wikipedia.org/wiki/%E5%B9%B2%E6%94%AF# … を参照
self.jikkan = { 0 : '庚', 1 : '辛', 2 : u'壬', 3 : '癸', 4 : '甲', \
5 : '乙', 6 : '丙', 7 : '丁', 8 : '戊', 9 : '己' }
self.junishi = { 0 : '申', 1 : '酉', 2 : '戌', 3 : '亥', \
4 : '子', 5 : '丑', 6 : '寅', 7 : '卯', \
8 : '辰', 9 : '巳', 10 : '午', 11 : '未' }
### http://www.ipc.hokusei.ac.jp/~z00104/delphi/srcl … を参照
self.seiza = { 1 : '山羊座', 2 : '水瓶座', 3 : 'うお座', 4 : '牡羊座', \
5 : '牡牛座', 6 : '双子座', 7 : 'かに座', 8 : '獅子座', \
9 : '乙女座', 10 : '天秤座', 11 : 'さそり座', 12 : '射手座' }
self.printSeizaAndEto()
def printSeizaAndEto(self):
print '生年月日を入力します。'
year = raw_input('生まれた年を入力してください : ')
month = raw_input('生まれた月を入力してください : ')
day = raw_input('生まれた日を入力してください : ')
s = "%s-%s-%s" % (year, month, day)
dobj= date(*strptime(s, "%Y-%m-%d")[0:3])
self.year, self.month, self.day = dobj.year, dobj.month, dobj.day
print "生年月日: %s" % dobj
print '星座: %s' % (self.seizaHantei())
print '干支: %s' % (self.etoHantei())
def seizaHantei(self):
if self.day > 22:
if self.month == 12:
return self.seiza[1]
else:
return self.seiza[self.month + 1]
else :
return self.seiza[self.month]
def etoHantei(self):
return self.jikkan[self.year % 10] + self.junishi[self.year % 12]
if __name__ == '__main__':
v = seizaAndEto()
No.1
- 回答日時:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### http://www.python.jp/doc/2.5/lib/node85.html を参照
### しかし本当はdatetimeモジュールを使う意味が分からない
### (なくても構わないような気がする)
from datetime import date
from time import strptime
### http://ja.wikipedia.org/wiki/%E5%B9%B2%E6%94%AF# … を参照
jikkan = { 0 : '庚', 1 : '辛', 2 : u'壬', 3 : '癸', 4 : '甲', \
5 : '乙', 6 : '丙', 7 : '丁', 8 : '戊', 9 : '己' }
junishi = { 0 : '申', 1 : '酉', 2 : '戌', 3 : '亥', 4 : '子', 5 : '丑', \
6 : '寅', 7 : '卯', 8 : '辰', 9 : '巳', 10 : '午', 11 : '未' }
### http://www.ipc.hokusei.ac.jp/~z00104/delphi/srcl … を参照
seiza = { 1 : '山羊座', 2 : '水瓶座', 3 : 'うお座', 4 : '牡羊座', 5 : '牡牛座', 6 : '双子座', \
7 : 'かに座', 8 : '獅子座', 9 : '乙女座', 10 : '天秤座', 11 : 'さそり座', 12 : '射手座' }
class seizaAndEto:
def __init__(self):
print '生年月日を入力します。'
self.year = input('生まれた年を入力してください : ')
self.month = input('生まれた月を入力してください : ')
self.day = input('生まれた日を入力してください : ')
s = "%d-%d-%d" % (self.year, self.month, self.day)
date_obj= date(*strptime(s, "%Y-%m-%d")[0:3])
print "生年月日: %s" % date_obj
print '星座: %s' % (self.seizaHantei())
print '干支: %s' % (self.etoHantei())
def seizaHantei(self):
if self.day > 22 and self.day < 32:
if self.month == 12:
return seiza[self.month + 1]
elif self.month > 12 or self.month < 1:
raise ValueError
else:
return seiza[self.month]
elif self.day > 0 and self.day < 23:
return seiza[self.month]
else:
raise ValueError
def etoHantei(self):
return jikkan[self.year % 10] + junishi[self.year % 12]
if __name__ == '__main__':
v = seizaAndEto()
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonでexcelのvbaを作成、実行する方法について Pythonで表の自動集計プログラムを 3 2022/07/09 09:58
- その他(プログラミング・Web制作) プログラミングについて(Python) 添付した画像はC言語で簡単に作ったソースで、1つの配列に5つ 3 2022/09/10 19:15
- その他(プログラミング・Web制作) MicroPython変数、関数について 2 2023/06/18 13:21
- その他(プログラミング・Web制作) python変数の使い方について 2 2023/06/16 17:32
- その他(プログラミング・Web制作) Pythonの変数 1 2023/06/16 17:40
- ダイヤルアップ Raspberry Piでアナログモデム経由で音声再生 1 2022/05/20 18:01
- Java マイクラでPythonのプログラミングができません 3 2023/05/28 07:15
- その他(プログラミング・Web制作) Pythonでプログラムを書いたのですが、このプログラムの動作説明がよくわからないので教えてください 2 2022/12/11 20:32
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- その他(プログラミング・Web制作) Pythonで写真のようなプログラムの作り方がどうしても分かりません。教えてください。 1 2023/01/05 18:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PICで世界時計を作りたいのですが
-
前日の日付取得するには?
-
大至急お願いします。出力で悩み。
-
Perlの日付の比較に関して
-
日付求め
-
mod_rewriteが反映されない
-
年月日の数値化?
-
Application.ScreenUpdating = ...
-
int(input("○○"))の使い方
-
PerlでXMLを解析して出力する。
-
整数でないとき
-
CGI メールフォームからBCCのア...
-
CGI初心者です
-
1つのプログラム内で"html出力...
-
JSONで文字列が長い時
-
確認画面に空白がでます
-
optionのselectedは更新時は効...
-
perlがうごきません
-
awkの正規表現での最左最短マッ...
-
javaのパッケージ構成で各パッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
先月(YYYYMM)の生成方法
-
日齢計算プログラム
-
大至急お願いします。出力で悩み。
-
2つの日付・時間の差分を求め...
-
サマータイムの判定について
-
CSV読み込み時に条件に合う行(...
-
1桁の日付に0を付ける
-
Perlの日付の比較に関して
-
ソースの詳細を教えてください。
-
当日の日付をプルダウンメニュ...
-
前日の日付取得するには?
-
日付の差分の求め方(日、分)
-
体重が3kg増える/減る の英語...
-
日付範囲をの連番と月末を取得
-
PICで世界時計を作りたいのですが
-
Schemeのプログラミング うる...
-
PerlからMysqlに接続してデータ...
-
perlでcheckboxがうまく整理で...
-
年令の計算方法
-
Perlで60進数を作りたい
おすすめ情報