2-2-4 string reordering


講義
質問する
大文字と数字(0~9)からなる文字列を入力します.このとき、すべてのアルファベットを昇順に並べて出力し、すべての数値を加算した値を出力します.
(K 1 KA 5 CB 7入力ABCK 13出力)
  • 数字=0から9
  • まで
  • 数=1001000…???
    入力条件:最初の行には文字列Sがあります.(1<=Sの長さ<=10000)
    出力条件:最初の行は問題の要求の答えを出力します.
  • 私の考え

  • アルファベットを単独で抽出して並べ替えたかったのですが、最初から文字列で書かれていました…?

  • 数字は文字列に書いてもintに変換できますので、各文字を比較する必要がありますか?
    ----->try-exception、条件文でアルファベットと整数を区別

  • アルファベットはどのように並べ替えますか...strはsort()関数を適用しない.
    何ですか.いいですよね?
  • alphabet_list.sort()
    print(alphabet_list,sum)  ---> 이런식으로 적어야 한다.
    
    print(alphabet_list.sort(),sum) ---> None을 반환한다.....근데 왜...?
    印刷物の中にあります.sort()を使用しているので、できません
    マイコード
    strings = input()
    number_list =[]
    alphabet_list=[]
    
    for string in strings:
      try:
        if int(string) in [0,1,2,3,4,5,6,7,8,9]:
          number_list.append(string)
      except:
        alphabet_list.append(string)
    
    sum = 0
    
    for number in number_list:
      num = int(number)
      sum = sum + num
    
    alphabet_list.sort()
    
    print(''.join(alphabet_list),sum)

    ?? 12日ぶりに書き直して運行できるんですよね??ハハハハ
    問題解決策
    文字列を入力するときは、文字を1つずつチェックします.数値の場合は、それぞれ合計が計算されます.アルファベットの個別リストにのみ格納されます.その結果、リストに格納されているアルファベットを並べ替えて出力し、総和を後ろに貼って出力すると、正解が得られます.
    data = input()
    result = []
    value=0
    
    for x in data:
      if x.isalpha():
        result.append(x)
      else:
        value += int(x)  #value = value + int(x)  
    
    result.sort()
    
    if value != 0:
      result.append(str(value))
    
    print(''.join(result))
    フィードバック

  • isalpha()にこのような関数があるとは知らなかったのでtry-は除外文でif int(string) in [0,1,2,3,4,5,6,7,8,9]:と書きました.結果は同じですが、関数を使った方がいいのではないでしょうか?!理由がわかりません!!!
    Python文字/数字であるかどうかを確認します

  • join関数でlist strに変換する必要があります.

  • リスト-->文字列変換:joinという関数について理解しました.
    区切り記号join(リスト)
    注意!!!
    joinを書くときはlistのすべての要素がstringでなければなりません!!リストに格納されている値が整数または実数の場合、TypeError: sequence item 0: expected str instance, int foundというエラーが発生します.つまり、リストを文字列に変換するには、すべての要素をstr型に変換する必要があります.
    リスト→文字列

  • この言葉がif value != 0:だとは思わなかった.数字がなければ、何も出力できないからです.まだ長い道がある...
  • アクティブ化コード
    strings = input()
    value = 0
    alphabet_list=[]
    
    for string in strings:
      try:
        if int(string) in [0,1,2,3,4,5,6,7,8,9]:
          value = value + int(string)
      except:
        alphabet_list.append(string)
    
    alphabet_list.sort()
    if value != 0:
      alphabet_list.append(str(value))
    
    print(''.join(alphabet_list))
    私のコードで変更します.number listは別途作成する必要はありません.数字はソートではなく加算されているからです.