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

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

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

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

Q&A

解決済

2回答

437閲覧

インデックスについてわかりません

satona

総合スコア1

Python

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

0グッド

2クリップ

投稿2021/07/10 21:14

編集2021/07/10 22:39

DNA='ACAGAACATTTGCGCCGTCAGCTTGAGAATTCACGGTAATAGTTGGGTGGC'
DNAの中に'TTG'の文字列が含まれている場合に、先頭のTの場所を出力するプログラムを記述せよ
答え 9,22,42

DNA='ACAGAACATTTGCGCCGTCAGCTTGAGAATTCACGGTAATAGTTGGGTGGC' list = [ ] for x , val in enumerate ( DNA ): if val == 'TTG': list.append ( x ) print (list)

とやったのですが、何も表示されません。
TTGの文字列を変数に格納してからprint(index.変数)で表示しようと思っているのですが、頭文字だけの順番を出力する方法がわからなく困っています。アドバイスくれる方おられたらお願いします。

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

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

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

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

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

kazuma-s

2021/07/10 21:33

コードの投稿に失敗しています。 teratail の「ヘルプ」をよく読んで、質問を修正してください。 if val == 'TTG': の前に print(x, val) を挿入してみると、 val が 'TTG' と一致することがないのが分かります。
y_waiwai

2021/07/10 22:15

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
guest

回答2

0

Pythonのリストの要素のインデックス(何番目か)を取得
Python データ構造、リスト型だもう少し

list.index(x[, start[, end]]) リスト中で x と等しい値を持つ最初の要素の位置をゼロから始まる添字で返します。 該当する要素がなければ ValueError が送出されます。

tryexceptを使えるのであれば、こちらが便利だと思います。


for x , val in enumerate ( DNA ):
によって取り出されるvalは__DNA__の一文字ずつです。
そのためA == 'TTG'といった比較となり、全てがFalseと判定されます。

for idx in range(len(DNA)-3):
このように、文字列に対してのインデックスを0(最初)から全体の長さ-3の範囲でループして、
文字列のスライス(例:DNA[0:3])を利用して一致するか判定してみてはどうでしょうか?

投稿2021/07/10 22:24

toshikawa

総合スコア388

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

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

satona

2021/07/11 05:24

tryやexceptなどまだ習って無いですが、それらを使えるようにまだまだ努力していきます。いろんなプログラム方法をご提案いただきありがとうございます。
guest

0

ベストアンサー

python

1DNA='ACAGAACATTTGCGCCGTCAGCTTGAGAATTCACGGTAATAGTTGGGTGGC' 2list = [] 3for x , val in enumerate ( DNA ): 4 print(val) 5 if val == 'TTG': 6 list.append ( x ) 7 print (list)

上記コードではDNAの文字が1文字ずつ出力されます。なのでif val == 'TTG':Trueにはなりません。

質問者さんのコードを活かすと下記コードはどうでしょうか?

python

1DNA='ACAGAACATTTGCGCCGTCAGCTTGAGAATTCACGGTAATAGTTGGGTGGC' 2list = [] 3for x , val in enumerate ( DNA ): 4 if val == 'T' and DNA[x:x+3] == 'TTG': 5 print(x) 6#9 7#22 8#42

投稿2021/07/11 01:39

meg_

総合スコア10716

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

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

satona

2021/07/11 05:23

回答ありがとうございます。自分の回答を活用して考えていただきとても分かりやすく、学ばせてもらいました。まだこの課題に対して自分の勉強不足を感じた次第ですが、がんばります。
meg_

2021/07/11 05:42 編集

投稿先を間違えてしまったのでコメント削除いたします。すみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問