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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

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

Python

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

Q&A

2回答

341閲覧

ord()関数を使い, アルファベット文字をシフト値によって変える

6shi

総合スコア15

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2019/03/07 18:04

strs = 'abcdefghijklmnopqrstuvwxyz' def shiftvalue(value): sentence = input('Enter a short sentence included 5 or 6 words: ') try: value = int(value) if value == 0: print('A shift value must be an integer and not be zero!') else: except ValueError: print('This shift value cannot be an integer! Try again...') if all(sentence.isalpha() or sentence.isspace() for x in sentence): else: print('A sentence should be contained only letters and spacese!') data = [] for i in sentence: if i.strip() and i in strs: data.append(strs[(strs.index(i) + value) % 26]) else: data.append(i) output = ''.join(data) return output コード

質問です。ord関数を使って, アルファベット文字をシフト値(Shift Value)に応じて変えたいのです。
例)shiftvalue=2, A → C, B → D, Y → A, Z → B.
shiftvalue=-2, E → C.
こんな感じの事をやりたいのですが, 調べてもord関数や大文字を小文字に変換するやり方がよくわかりません。
アドバイスお願いします。

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

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

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

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

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

guest

回答2

0

ordとchr使ってもできるけど、かえって面倒くさい感が・・・

python

1>>> import string 2>>> chars = string.ascii_lowercase 3>>> chars_inv = {c:i for i, c in enumerate(chars)} 4>>> f = lambda s, n:"".join(chars[(chars_inv[x]+n)%26] for x in s) 5>>> f("hoge", 1) 6'iphf' 7>>> f("xyz", 2) 8'zab' 9>>> f("abc", -2) 10'yza' 11>>> f("abcde", 28) 12'cdefg'

投稿2019/03/08 00:16

hayataka2049

総合スコア30933

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

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

0

python

1usr ~ % py 2Python 3.7.2 (default, Dec 29 2018, 06:19:36) 3[GCC 7.3.0] :: Anaconda custom (64-bit) on linux 4Type "help", "copyright", "credits" or "license" for more information. 5>>> print([chr(i) for i in range(97,97+26)]) 6['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 7>>> print([chr(i) for i in range(65,65+26)]) 8['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 9

Pythonでリストをシフトする効率的な方法

python

1>>> l=[chr(i) for i in range(65,65+26)] 2 3>>> def shift(l, n): 4... return l[n:] + l[:n] 5... 6>>> shift(l,1) 7['B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A'] 8>>> shift(l,2) 9['C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'A', 'B'] 10>>> shift(l,-2) 11['Y', 'Z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X'] 12>>> print(l[2]) 13C 14>>> ord(l[2]) 1567 16>>> print(l[0],l[1],l[2]) 17A B C 18>>> print(shift(l,2)[0]) 19C 20>>>

投稿2019/03/07 18:30

編集2019/03/07 19:29
cateye

総合スコア6851

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

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

6shi

2019/03/07 19:01

ご回答ありがとうございます。 失礼ですが,ord関数はどのように使えるのでしょうか?
cateye

2019/03/07 19:13 編集

ord()は文字をASCIIコードに変えますが何に使うのですか? >>> ord("a") 97 >>> chr(ord('a')-ord('A')+65) 'a' >>> chr(ord('a')-ord('A')+66) 'b' >>> chr(ord('a')-ord('A')+67) 'c' >>> print('A'.lower()) a >>>
6shi

2019/03/07 19:52

最初に大文字を小文字に変換して,小文字をord関数を使い0~25の整数(n)にしたいです(ord(小文字)-97)。 その後, その整数をchr関数を使い小文字に戻そうと思います(chr(n+97))。
cateye

2019/03/07 21:59

odr('A'}+32で小文字、odr('A'}+32-97で0-26、chr(odr('A'}+32-97+97)って何か意味が?
y_waiwai

2019/03/07 22:04

何かの課題でしょうか?そうなら最初に言っときましょう。
6shi

2019/03/07 23:11

はい,課題です。 ord, chr関数についてはヒントとして上げられたのですが,どう利用するのかがわからなかった感じです。 これらの関数は使う必要はありませんか?
cateye

2019/03/08 02:03

課題だとすると(ソース↑出して)出典聞かれませんか? teratailはいいの? 題意はクリアしてると思うけど・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問