質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
標準入力

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

Q&A

1回答

11808閲覧

文字列を枠で囲む(python)

hottie

総合スコア0

標準入力

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

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Python

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

0グッド

0クリップ

投稿2020/10/12 17:27

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
標準入力で出力する文字列を+の枠で囲む装飾をするプログラムを書きたいです。


+++++++
+arist+
+++++++
↑のようになるプログラムを書きたいです。

input_line = input()
print(str(len(input_line))*"+")
このようなコードで試そうとしましたがこの後がわかりません。
言語はpythonです。

どのようなやり方がありますか?

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

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

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

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

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

guest

回答1

0

これでどうでしょうか?

Python

1input_line = input() 2 3str_len = len(input_line) 4 5print('+' * (str_len + 2)) 6print('+'+input_line+'+') 7print('+' * (str_len + 2)) 8 9# 出力結果例 10# +++++++ 11# +arist+ 12# +++++++

<追記>全角文字対応版

toast-uz さんのご指摘通り、最初のコードは全角文字に対応できていなかったので、全角文字対応版を追加します。ただ、

Python

1import unicodedata 2 3def len_count(text): 4 count = 0 5 for c in text: 6 if unicodedata.east_asian_width(c) in 'FWA': 7 count += 2 8 else: 9 count += 1 10 return count 11 12 13input_line = input() 14 15str_len = len_count(input_line) 16 17print('+' * (str_len + 2)) 18print('+'+input_line+'+') 19print('+' * (str_len + 2)) 20 21# 出力結果例1 22# ++++++++++++ 23# +テラテイル+ 24# ++++++++++++ 25 26# 出力結果例2 27# ++++++++++++++++ 28# +Pythonは楽しい+ 29# ++++++++++++++++

ただ、フォントによっては等幅フォントでも半角と全角文字の幅の比率が1:2ではないフォントも存在するため、フォント次第で少しズレてしまいます。(上記コードの中の出力例も少しズレています)
全角文字の数で囲う文字の上下の数を調整したほうがよいかもしれません。

投稿2020/10/12 18:13

編集2020/10/13 04:11
takutakuya

総合スコア979

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

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

takutakuya

2020/10/13 04:13

toast-uz さん ご指摘ありがとうございました! 教えていただいた方法を使用した全角対応版を追加しました。 こちらの方が良いと思います。
toast-uz

2020/10/13 04:28

素晴らしいです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問