Kenta-K
@Kenta-K

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Python3 直角三角形亜種 標準入力

解決したいこと

標準入力を3つ受付けて
数字の大きさの分アルファベットを出力する

例) int(input(3)).split()
int(input(6)).split()
int(input(9)).sprit()
A B C
D E F G H I
J K L M N O P Q R
など

該当するソースコード

# Python3

h_1 = int(input()).split()
h_2 = int(input()).split()
h_3 = int(input()).split()

if h_1 == 1:
  print("A")
else if h_1 == 2:
    print("A" + "B")
else:
    print()

 if h_2 == 1:
  print("C")
 else if h_2 == 2:
    print("C" + "D")
 else if h_2 == 3:
    print("C" + "D" + "E")
else:
    print()

#なんだか混乱してきました
 教えてください よろしくお願いします






0

3Answer

そちらの質問に答える前に,前回の

この質問は解決されたのか教えてください.

なんだか混乱してきました

タイトルの「直角三角形亜種」という単語にこちらも混乱しています.

1Like

Comments

  1. @Kenta-K

    Questioner

    アルゴリズム問題で*マークで直角三角形を描く問題がありますが
    それに近い考え方でいいのかなと思ったのですが・・・
    2と打つと
    *
    * *

    4と打つと
    *
    * *
    * * *
    * * * *
    など

else if

これはPythonではありませんね。

こんなことがしたいのでしょうか?

triangle.py
a = int(input())
b = int(input())
c = int(input())
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
print(alphabet[:a])
print(alphabet[a:a+b])
print(alphabet[a+b:a+b+c])
実行結果
$ python3 triangle.py
3
6
9
ABC
DEFGHI
JKLMNOPQR

26文字以上使うなら、文字列を繰り返して対応。

a = int(input())
b = int(input())
c = int(input())
alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" * ((a + b + c) // 26 + 1)
print(alphabet[:a])
print(alphabet[a:a+b])
print(alphabet[a+b:a+b+c])
0Like

Comments

  1. コメント内ではコードブロックが使えないようなので、回答に追記しました。

先述の要件で言うと,初項が1の等差数列であれば三角形ができそうですね,公差と三角形の高ささえ入力で受け取ればいいので

tolerance = int(input())
height = int(input())
cnt = 0

def alphabet(h):
	global cnt
	ret = ""
	for _ in range(h):
		ret += chr(ord("A") + cnt % 26)
		cnt += 1
		cnt %= 26
	return ret
	
for i in range(1, tolerance * height, tolerance):
	print(alphabet(i))

になるのではないでしょうか. 例として公差3,三角形の高さ5として入力を与えると

標準入力
3
5

以下の出力が得られます.

標準出力
A
BCDE
FGHIJKL
MNOPQRSTUV
WXYZABCDEFGHI

出力するアルファベットの個数が26個以下であれば @shiracamus さんのコードを使う形にするといいと思いますが,上記コードは念の為出力するアルファベットの個数が幾つになってもいいようにしたものです.

また,最初に言っていただいた3入力の要件を使うなら以下になります.

h_n = [int(input()) for _ in range(3)]
cnt = 0

def alphabet(h):
	global cnt
	ret = ""
	for _ in range(h):
		ret += chr(ord("A") + cnt % 26)
		cnt += 1
		cnt %= 26
	return ret
	
for h in h_n:
	print(alphabet(h))

例として,369を与えると

標準入力
3
6
9

以下の出力が得られます.

標準出力
ABC
DEFGHI
JKLMNOPQR

三角形というよりは台形ですね,ここが最もタイトルとかけ離れているいる状態だと思って混乱しました.

0Like

Your answer might help someone💌