• ベストアンサー

勉強始めたところです。

数字と文字を含む文字列Aから数字だけ表示させたいのですが、うまくできず困ってます。(ただし、import reは使用しない。) (1)[0,1,2…,9]のリストを作成 (2)for文で、文字列Aの桁数をループさせる (3)for文内で、文字列Aの各要素がリスト内にあるか確認 (4)(3)で一致しないものは文字と判断する。 (5)for文のループ引数iから、文字列[:i]で表示 と考えているんですが、うまくできません。複雑になって混乱します。 考え方が間違っているのでしょうか。 どのように作成するとうまくいくでしょうか。

  • Python
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.3

(1)は、[0,1,2…,9]のリストを作成 じゃなくて、"0123456789"でいいです。 (3) は、in演算子を使って、 "A" in "0123456789" => False "2" in "0123456789" => True です。 他は概ね良いです。

その他の回答 (2)

  • f272
  • ベストアンサー率46% (8019/17138)
回答No.2

少なくとも今までにあなたがどんなコードを書いたのかを開示して,どこでつまずいているのかを書いた方がよい。 なぜ「ただし、import reは使用しない」なんていう無駄な縛りを掛けるのですか?

  • agehage
  • ベストアンサー率22% (2554/11355)
回答No.1

文字数を数える forで1から最後の文字まで繰り返す  1文字目は数字なら出力する  2文字目は数字なら出力する   ・   ・  文字数目(最後の文字)が数字なら出力する 1文字目とか最後の文字とか、少しずれるかも あなたの環境に合わせて調整してみてください

関連するQ&A

  • 理解できず困ってます。

    6回改行された文字列を入力した場合に、文字列をリストで表示したいのですが、 こんな感じで書いてみましたが、動作しません。。。 (’後のコメントで間違っているところも指摘いただきどうすればよいかご教示いただないでしょうか。。)             ’下記は私の認識及び、こうなっている?と思っていること mylist = []        ’リストの宣言? for i in range(5):     ’入力される文字列をiでカウント val = input()      ’入力される文字列をvalに代入 if val !='':      ’文字列が入力された場合 mylist[i] = val   ’i要素にvalを代入(文字列 ⇒ ['文字列']のイメージ) i = i + 1      ’iのカウントアップ else:        ’文字列が何も入力されてない場合 break      ’ifループを抜ける next          ’for文ループ print(mylist)       ’['文字列[0]','文字列[1]','文字列[2]','文字列[3]','文字列[4]','文字列[5]']を表示

  • Excelで一つのシートに複数のリストを作成し、別のところにその集計表

    Excelで一つのシートに複数のリストを作成し、別のところにその集計表を作成したいです。リスト(1)はA列に文字列(例えば社名とか)B列に数字、リスト(2)はD列に文字列E列に数字です。集計表は、G列に各リストの文字列を重複分を除いて抽出して表示させ、H列には数字(重複文字列の数字は合計します)が表示されるようにしたいです。どのようにしたらいいでしょうか?参考URLでもいいのでお願いします。

  • C言語を現在勉強しています。わからないことがあり

    こんにちは 現在C言語を勉強しておりまして、わからないことがありましたので質問させていただきます。  下記のような文字列があります。 この文字列で、A~Eまでの各英文字がそれぞれ何回登場してくるかがわかるプログラムを作成しなさい。  (for文を使い、'\0'をループの終了判定条件にすること。switch文を使用すること) #include <stdio.h> int main() { char ch[] = "EADBACABEEAAC"; という問題なのですが まったく手も足もでない状態です。 なにかヒントや、アドバイスを頂ければと思います。 よろしくお願いします

  • 期待する文字列

    フリーウェアのBorland c++compiler 5.5で 動的メモリーを確保して、期待する文字列(実数文字)が入力されるまで 繰り返すというプログラムを作っています。 以下のプログラムだけだと正常に動作しますが、その関数をループさせて 期待する文字列までループさせると数字のみなら実効可能ですが、 数字以外の文字が混じって15文字以上になると「不正な処理~~~」と強制終了させられます。 以下が そのプログラムの考え方です。 1 関数 A() 動的メモリーの確保   2へ 2 関数 B() 文字の読み込み(必要に応じてメモリー拡張) 3へ 3 関数 C() '.'個数チェック 2=エラー表示            1=小数点の書き換え(数字) 4へ            0=             4へ 4 関数 D() 関数isdigitで各メモリーをチェック 無限ループを使って int i=1; while(i) { 関数 A() }iのアドレス(ポインタ)を4まで引数にして iの値を0に書き換えループから脱出させています c言語を勉強して2週間の初心者です。どこがいけないのか 分かりません。 どなたか教えてください。          

  • 文字のチェック

    excelのvbaでsheet2のA列には1または2または5が入っていて、B列には00542,00984などたくさんの文字列が入っています。 それでA列の数字が2かつB列が2文字目降(054,098)の3文字分が098または099なら、sheet3のA列に0を出力というプログラムを作っています。下記が作成したプログラムなのですが、if文の型が違うというエラーが出たり、エラーが無くても表示されなかったりします。 ご指摘ありましたら、よろしくお願いします。 Sub Macro1() ' ' Dim i As Long For i = 1 To 5 If Mid(Sheets(Sheet2).Cells(i, 2), 2, 3) = "'098" Or Mid(Sheets(Sheet2).Cells(i, 2), 2, 3) = "'099" And Sheets(Sheet2).Cells(i, 1) = 1 Then Sheets(Sheet2).Cells(i, 3).Value = 0 End If Next ' ' End Sub

  • Excelでfor文とif文の操作をしたいです

    Excelについての質問です。 Excelで、画像のようにシート1のA列にアルファベットと数字のデータがあり(重複はありません)、B列に1~5の数字が入っているとします。 この時、シート2のB列に、シート2のA列で指定したものと一致する、シートAのB列の値を入力したいです。 (この例の場合、上から順に5、4、1です) プログラミング言語でいう、いわゆるfor文とif文の併用で for(i=1;i<4;i++){ for (j=1;j<8;j++){ if(シート1のセルAj==シート2のセルAi){   シート2のセルBiにシート1のセルBjを値を入れる   ループを抜ける } } } というような感じになると思います。(間違っていたら申し訳ないです。) こういった処理は、Excelのマクロで可能でしょうか? また、できればどうすれば実現できるか、教えていただけると助かります。 よろしくお願いいたします。

  • 桁数を求めるプログラム。

    入力した数字の桁数を表示させるというプログラムを考えています。 例) 135 この数字の桁数は3桁です。 などと表示させたいと思っています。 それで、私は入力した数値を10で割っていって入力した数値aがa<=0になったらループを終了して 何回ループしたかのカウンタで桁数を表示させようかと考えました。 たとえば135→13.5→1.35→0.135で整数部分が0となるのでループを打ち切って 3回繰り返したので3桁と表示させたいと思いました。 それでプログラムを考えてみたのですが、どうにもうまくいきいません。 どのように修正したら桁数が表示できるようになるでしょうか? #include <stdio.h> main() { double a=0; int n=1; scanf("%d",&a); while(1) { a=a/10.0; if(a<=0){ break; } n++; } printf("その数は%d桁です。\n",n); }

  • 恥ずかしながらC言語解析中のプログラムで!?

    練習問題 5-20 列数を示す数値を入力し、'a'~'z'の文字を指定された列数に従って表示するプログラムを作成しなさい。  以下のプログラムを解析中で、まだ素人で基本的な質問ですがご了承ください。 1) int col; /* 2) char i;/*文字列関数*/ 3) scanf( "%d", &col ); /*英数文字の行に並ぶアルファベットの個数を1~26までの任意の数字を一件入力する。*/ 4) for( i = 0 ; i < 26 ; i++ ){ /*アルファベットは26個はa b c・・・の順番でループする命令*/ 5) if( i > 0 && ( i % col ) == 0 )/*アルファベットのループ範囲はa~です。アルファベット26文字÷3)で入力した数の余りが0・・・? 6) printf( "\n" ); /*結果がでたら改行する。*/ 7) printf( "%c", 'a' + i ); /* 現在解析中*/ 8) } -----------------------------------------------------------------  以上ですが、  5)の==0で、このプログラムでの役割は何ですか?  よろしくお願いいたします。

  • 組み合わせのパターンを作成する関数

    組み合わせのパターンを作成する関数を作成したいと思っています。 仕様は以下のような感じです。 引数 ・list:材料となる文字の配列 ・len:作成する文字列の数(2以上) 戻り値 ・組合わせた文字列の配列 例 (["a", "b", "c"], 2)→["aa", "ab", "ac", "ba", "bb", "bc", "ca", "cb", "cc"] (["a", "b"], 3)→["aaa", "aab", "aba", "abb", "baa", "bab", "bba", "bbb"] 私はとりあえず作成する総パターン数(Math.pow(list.length, len))回ループでまわし、indexをtoStrungでn進数にし(ゼロパディングし)、最後に数字と対応する文字を置換するという方法で実装しました。とりあえず動いています。 しかし他にもいろいろなアルゴリズムが考えられそうなので、他の実装・よりよい方法を知りたいと思いまして質問させていただくことにしました。 できれば具体的なコードを教えていただきたいです。 よろしくお願いします。

  • 永久ループ・・・

    どうも、最近C言語の勉強を始めた超初心者です。 int main(void) { int i; for(;;){ printf("桁数を入力してください。:"); scanf("%d",&i); if(i<=12) break; else puts("もう一度入力してください。"); continue; } return(0); } 上のソース、i<=12の条件を満たさなければループを繰り返すというプログラムなんですけど、数値を入力した場合は思った通りに挙動するのですが、文字や文字列を入力すると永久ループになります。scanf関数で返値を受け取って判定するなどいろいろ試したのですが、どうしても永久ループになってしまいます。 どうしてか教えてください。お願いします。

専門家に質問してみよう