はじめに
Pythonの勉強のために以下のようなプログラムを書きましたが、
もっと効率的な書き方があると考えているので、
有識者の方々の意見が聞きたく記事にしました。
もっと行数短く書けるよ!っていう有識者の方々、是非ともコメント頂きたいです。
和暦変換
和暦変換
# 年数(西暦)で入力
year = int(input())
Syear = [1868, 1912, 1926, 1989, 2019, 9999]
wareki = ['明治', '大正', '昭和', '平成', '令和', '']
i = 0
# 和暦変換
while Syear[i] <= year:
Wyear = year - Syear[i] + 1
Wname = wareki[i]
i += 1
# 出力
print(str(year) + '年は' + Wname + str(Wyear) + '年')
年齢判定
年齢判定
import datetime
# 生年月日(西暦)を入力
Tymd = input()
# 年月日に分割
param = Tymd.split('/')
Tyear = int(param[0])
Tmonth = int(param[1])
Tday = int(param[2])
# 現在の日付を取得
Today = datetime.datetime.now()
year = Today.year
month = Today.month
day = Today.day
# 年齢計算
age = int(year) - int(Tyear)
if int(month) < int(Tmonth):
age -= 1
else:
if month == Tmonth:
if day < Tday:
age -= 1
# 出力
print(Tymd + 'の人は' + str(age) + '歳')
曜日判定
曜日判定
import math
# 入力値(例: 1997/9/11)をうけとる
x = input()
# 入力値を年月日に分割
y = x.split('/')
year = int(y[0])
month = int(y[1])
day = int(y[2])
# 出力
print(str(year) + '年' + str(month) + '月' + str(day) + '日は', end = '')
if month < 3:
month = month + 12
year = year - 1
# 曜日を求める
weekday = (year + math.floor(year / 4) - math.floor(year / 100) + math.floor(year / 400) + math.floor((13*month+8) / 5) + day) % 7
week = ['日', '月', '火', '水', '木', '金','土']
# 出力
print(str(week[weekday]) + '曜日です')
複数桁の桁分解
複数桁の桁分解
# 入力値をうけとる
x = int(input())
num = []
# 1桁ごとに分解
while x > 0:
num.append(x % 10)
x //= 10
num.reverse()
# 出力
for i in range(len(num)):
print(num[i], end = ' ')
閏年判定
閏年判定
# 年数(西暦)を入力
year = int(input())
# 閏年判定
if year % 4 == 0:
if year % 100 == 0:
if year % 400 == 0:
print(str(year) + '年は閏年')
elif year % 400 != 0:
print(str(year) + '年は閏年ではない')
else:
print(str(year) + '年は閏年')
else:
print(str(year) + '年は閏年ではない')
干支判定
干支判定
# 年数(西暦)を入力
year = int(input())
# 全干支
Alleto = ["申(さる)", "酉(とり)", "戌(いぬ)", "亥(いのしし)", "子(ねずみ)"
, "牛(うし)", "寅(とら)", "卯(うさぎ)", "辰(たつ)", "巳(へび)", "午(うま)", "未(ひつじ)"]
# 干支判定&出力
print(str(year) + '年の干支は' + Alleto[year % 12])
素数判定
素数判定
# 2以上の数値を入力
num=int(input())
# 0: 素数
# 1: 素数ではない
sosu = 0
# 素数判定
for i in range(2, num):
if num % i == 0:
sosu = 1
break
# 出力
if sosu == 0:
print(str(num) + 'は素数である')
elif sosu == 1:
print(str(num) + 'は素数ではない')