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

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

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

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

Q&A

解決済

4回答

231閲覧

正の整数の昇順をリスト以外の方法でアウトプット

Bafetto

総合スコア22

Python 3.x

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

0グッド

0クリップ

投稿2018/12/20 03:56

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
python
1行目に続く数字の総数があって、縦にならんだ正の整数を昇順にしてアウトップットしたい。アウトプットは、リスト以外。

インプット アウトプット
4     1
4 2
3 3
2 4
1

発生している問題・エラーメッセージ

昇順の仕方がわからない 以下のコードはダメ。アウトプットがリストだから。 count = int(input()) list = [] for i in range(count): list.append(int(input())) list.sort() print(list) 以下エラーメッセージ Traceback (most recent call last): File "Main.py", line 8, in <module> line.sort AttributeError: 'str' object has no attribute 'sort'

該当のソースコード

python

1count = int(input()) 2print(str(count)) 3for i in range(count): 4 line = input().rstrip() 5    line.sort 6    print(line)

試したこと

上記コードのline.sortをコメントにすると、
4
3
2
1
がアウトプットされる。おそらく、lineがリストでないからsortが使えないのだと思う。ではどうすれば?

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答4

0

ベストアンサー

『リストを使わない方法』より、
『リストの要素を希望どおりに出力する方法』を検討すべきなのでは。

Python

1>>> lst = [3, 1, 4] 2>>> lst.sort() 3>>> 4>>> for e in lst: 5... print(e) 6... 71 83 94 10>>> 11>>> print(*lst, sep='\n') 121 133 144

なお、オブジェクトにlistと命名することは厳に避けてください。
解釈しづらいエラーを引き起こします。

Python

1>>> list('spam') 2['s', 'p', 'a', 'm'] 3>>> 4>>> list = list('spam') 5>>> 6>>> list('spam') 7Traceback (most recent call last): 8 File "<stdin>", line 1, in <module> 9TypeError: 'list' object is not callable

同様に使ってしまいがちな名前としては、str, id, max などがあります。

投稿2018/12/20 05:06

LouiS0616

総合スコア35660

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

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

Bafetto

2018/12/20 05:53

なるほど、できました。 私はリストそのものをprintしていたから、[]で表示されていたのですね。 作った昇順後リストから値を取り出して、printすれば縦に表示されるのですね。 さすが「python総合1位」。名前の注意も感謝です。質問された方も困りますよね。LouiS0616さんに付いて行きます。 #最初の正の総数を入れる count = int(input()) #リストを作る lst = [] #繰り返しでリストにデータを入れる for i in range(count): lst.append(int(input())) #リストを昇順にする lst.sort() #昇順したリストを繰り返しで表示する for k in lst: print(k)
guest

0

sort 処理は list で行い、結果を要求されている書式で表示するようにします。
3つの表示方法を書いてみました。

p.py

python3

1count = int(input()) 2data = [int(input()) for i in range(count)] 3 4print() 5print(*(sorted(data)), sep="\n") 6 7print() 8print("\n".join(map(str,sorted(data)))) 9 10print() 11[print(x) for x in sorted(data)] 12

実行例
イメージ説明

投稿2018/12/20 16:32

katoy

総合スコア22324

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

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

0

[1,2,3,...]というlistまで作れているのなら、あとは要素を1つずつprintする方法を考えた方が良いです。

わかりやすい方法はこんな感じ。

python

1lst = [1,2,3] 2for x in lst: 3 print(x)

投稿2018/12/20 05:11

hayataka2049

総合スコア30933

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

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

0

list.sort()

が間違いです。このままではデータ入力の繰り返しに含まれてしまうので、

Python

1count = int(input()) 2list = [] 3for i in range(count): 4 list.append(int(input())) 5list.sort() 6print(list)

とインデントを下げずに使いましょう。

投稿2018/12/20 04:36

seastar3

総合スコア2285

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

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

Bafetto

2018/12/20 05:01

解答ありがとうございます。私の質問の仕方が悪かったみたいです。アウトプットがリストではダメなんです。 実現したいことの欄にあるように、縦の整数の列のようにアウトプットしたいのです。 ×[1,2,3,・・・] ○1 2 3 4
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問