質問するログイン新規登録

Q&A

解決済

2回答

2965閲覧

python3 AとBを交互に出力したい

pg_th

総合スコア4

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2023/09/14 13:57

0

0

実現したいこと

ここに実現したいことを箇条書きで書いてください。
python3

AとBを繰り返して表示したい!

前提

ここに質問の内容を詳しく書いてください。
プログラミング言語はpython3です。

問題を解いていてわからない部分があったので質問させていただきました。
31日ある月があるとします。その月にバンドAとバンドBがライブを数回します。
どちらも全て行くのですが、数回被ってしまう日があります。その日は交互にAとBに行くことにしました。何日目にどちらのバンドに行くか、表示してください。
という問題があります。

標準入力で下記のものを読み取ります。
3(Aのバンドに行く日の回数)
1
4
5
4(Bのバンドに行く日の回数)
1
5
18
22
↑この場合、Aに行く日は4日でBに行く日は18日,22日で
1日と5日は被っているので、1日はAのバンドに、5日はBのバンドに行く。
という感じです!

31日まで縦に表示し、Aのバンドに行く日は「A」、Bのバンドに行く日は「B」と表示し、被った日はAとBを交互に表示します。どちらにも行かない日はXと表示します。

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

31日までfor文で縦に表示して、AとBのバンドに行く日を読み取りA,Bと表示するところまでは行けたのですが、AとBを交互に表示するプログラミングがfor文を使ってどのようにすればいいかわかりません。

該当のソースコード

python3

1 2count = int(input())#Aのバンドに行く日を読み取る 3for i in range(count): 4 line = input().rstrip() 5 6count2 = int(input())#Bのバンドに行く日を読み取る 7for m in range(count2): 8 line2 = input().rstrip() 9 10for n in range(31):#31日 11 if i==n: 12 print("A")#Aのバンドに行く日 13 elif m==n: 14 print("B")#Bのバンドに行く日 15 elif i==m:#もしAとBが同じだったら、、、 16   #ここの部分がわかりません。 17 else: 18 print("x")#どちらも行かない日

試したこと

for文、リスト、if文など自分が知っている知識を使って何度も挑戦してみました。
リストにAとBを入れて、リストから表示する際に、縦にA、Bと表示するのではなく、一回のみで表示させる(AだったらAのみ。次になったら続きのBのみ)方法はどうかな、と考えましたがうまく自分でプログラミングにすることができませんでした。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

guest

回答2

0

ベストアンサー

プログラムを使わなくてそういうことを実際にやるなら、「えーと、前回かぶった時にどっちに行ったっけ?」と自分のスケジュール表あるいは日記などを調べると思いすが、それと同じで、「前回、日にちがかぶった時にどっちに行ったか」を保存する変数を作ればいいです。で、それと反対側に行って、その変数を更新。

かぶった場合の初回にAに行くなら、その変数の初期値はBですね。

投稿2023/09/14 14:10

otn

総合スコア86623

pg_th

2023/11/16 01:51

遅れてすみません。 回答ありがとうございます。 参考にします!
guest

0

記述例を下記に示します。

  • t が,被った日に 'A', 'B' を交互に表示するための変数です

  • P ∧ Q, P ∧ ~Q, ~P ∧ Q, ~P ∧ ~Q の 4 分岐は if P and Q:, elif P:, elif Q:, else: の形で記述できます

Python

1live_A = [1, 4, 5] 2live_B = [1, 5, 18, 22] 3 4alt = ['A', 'B'] 5t = 0 # or t = 1 6 7for n in range(1, 32): 8 if n in live_A and n in live_B: 9 mark = alt[t] 10 t = 1 - t 11 elif n in live_A: 12 mark = 'A' 13 elif n in live_B: 14 mark = 'B' 15 else: 16 mark = 'x' 17 18 print(f'{n:2d} {mark}') 19# 1 A 20# 2 x 21# 3 x 22# 4 A 23# 5 B 24# 6 x 25# 7 x 26# 8 x 27# 9 x 28# 10 x 29# 11 x 30# 12 x 31# 13 x 32# 14 x 33# 15 x 34# 16 x 35# 17 x 36# 18 B 37# 19 x 38# 20 x 39# 21 x 40# 22 B 41# 23 x 42# 24 x 43# 25 x 44# 26 x 45# 27 x 46# 28 x 47# 29 x 48# 30 x 49# 31 x

投稿2023/09/15 06:12

little_street

総合スコア563

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.25%

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

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

質問する

関連した質問