🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

478閲覧

for in を使って特定の期間を求めたい。

Keita0512

総合スコア0

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2021/02/21 07:58

編集2021/02/22 06:26

前提・実現したいこと

Pythonで昭和○○年から○○年分を出力させたい。

発生している問題・エラーメッセージ

課題
ー1. ↓の文字列が指定されている。
ー2. for in range()を使う必要がある。

入力
1975 #西暦年
10  #年数

以下のようにプログラムを書いて答え通りに出力されたのですが、正しい解き方ではないようでエラーが出る。
他の解き方はないでしょうか。

seireki = int(input()) nennsuu = int(input()) for seireki in range(seireki,nennsuu+1975): print("西暦" +str(seireki)+ "年は" ,end="") syouwa = seireki - 1925 print("昭和" + str(syouwa)+ "年です")

出力「
西暦〇〇年は昭和○○年です
西暦○○年は昭和○○年です



西暦○○年は昭和〇〇年です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2021/02/21 08:18

> 下の方法でも解けたのですが、他により良い解き方はないでしょうか。 現在の方法に不満があるため本質問をされたのだとは思いますが、現在の方法の課題は何でしょうか?
Keita0512

2021/02/21 08:38

返答ありがとうございます。 課題は、年数に1975を足さずに求める方法があるのではないかという点です。 3行目を変えないといけないのではと考えているのですが、考えても調べても方法が見つからずでした。
guest

回答1

0

条件にあっているかどうかわかりませんが、
Japanera 0.1.1を使えば以下です。

python

1>>> from japanera import EraDate 2>>> 3>>> start = 2015 4>>> nennsuu = 10 5>>> for seireki in range(start, start + nennsuu): 6... print("西暦" +str(seireki)+ "年は" ,end="") 7... print(EraDate(seireki, 1, 1).strftime("%-E%-O年")) 8... 9西暦2015年は平成2710西暦2016年は平成2811西暦2017年は平成2912西暦2018年は平成3013西暦2019年は平成3114西暦2020年は令和0215西暦2021年は令和0316西暦2022年は令和0417西暦2023年は令和0518西暦2024年は令和06

プログラムの書き方の練習ということであれば、
まず、
for seireki in range(seireki,nennsuu+1975):
は止めた方が良いでしょう。
右のseirekiと左のseirekiの意味が違うので、後で見たとき混乱しやすくなります。
また、nennsuu+1975ということは、seirekiが2000年でnennsuuが10年のときには何も出力されなくなりますので、意図とは違うのではないでしょうか。

以上の部分を修正した上で、フォーマット付文字列を使って短く書くようにすると以下のようになります。

python

1>>> start = int(input('最初の年を指定してください: ')) 2最初の年を指定してください: 1975 3>>> nennsuu = int(input('何年分かを指定してください: ')) 4何年分かを指定してください: 10 5>>> for seireki in range(start, start + nennsuu): 6... print(f"西暦{seireki}年は昭和{seireki - 1925}年です") 7... 8西暦1975年は昭和50年です 9西暦1976年は昭和51年です 10西暦1977年は昭和52年です 11西暦1978年は昭和53年です 12西暦1979年は昭和54年です 13西暦1980年は昭和55年です 14西暦1981年は昭和56年です 15西暦1982年は昭和57年です 16西暦1983年は昭和58年です 17西暦1984年は昭和59年です

投稿2021/02/21 08:38

編集2021/02/21 10:12
ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Keita0512

2021/02/21 08:46

ありがとうございます。そういった解き方もあるんですね。 始めたばっかの初心者で、その関数は初めて知りました。 おこがましいですが、標準入力とfor in を使った解き方を教えていただけると幸いです。
Keita0512

2021/02/22 05:25

すみません、ありがとうございます。 解けました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問