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

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

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

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

Q&A

受付中

printで1行で表示したい

shinnnaka
shinnnaka

総合スコア6

Python 3.x

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

2回答

0グッド

0クリップ

165閲覧

投稿2023/01/23 12:53

編集2023/01/23 23:36

前提

python です
2分探索を書いてます

実現したいこと

2分探索で途中のdata[left],data[mid],data[right]の数値の変化が見たいので1行でprint関数で表示されるようにしたい

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

TypeError: str() argument 'encoding' must be str, not int
もしくは
TypeError: list indices must be integers or slices, not tuple

該当のソースコード

data = [1, 2, 9, 16, 22, 25, 30, 40, 50, 57, 72, 78, 82, 94, 100] key=int(input("入力してください")) left=0 right=len(data)-1 flg=0 while left<right: mid=(left+right)//2 print("L={} M={} R={}".format(left,mid,right)) print(str(data[left],data[mid],data[right])) if data[mid]==key: print("data[{}]が{}です".format(mid,key)) flg=1 break if data[mid]<key: left=mid+1 else: right=mid-1 if flg==0: print("その値は見つかりませんでした")``` ```ここに言語を入力 コード

試したこと

print(str(data[left])だけならでるのにdata[right]もたすとでなくなる
質問編集しました、ご指摘ありがとうございました

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

can110

2023/01/23 14:06

コードにインデントがなくなり検証、実行できないのでコードブロックで囲んでください。
y_waiwai

2023/01/23 14:29

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

回答2

1

print(str(data[left],data[mid],data[right]))

クラスstr()の引数の数が間違っています。

str(object='')
または
str(object=b'', encoding='utf-8', errors='strict')
です。

encodeingに、data[mid]が代入され、「encodingはintじゃなくてstrだろ」って怒られてます。

詳しくは公式ドキュメントを確認してください。
https://docs.python.org/ja/3/library/functions.html#func-str
https://docs.python.org/ja/3/library/stdtypes.html#str

文字列にするのであれば、
中身をタプルやリストにしたり
str((data[left],data[mid],data[right]))
str([data[left],data[mid],data[right]])

formatやf文字列を使いましょう。
f"{data[left]},{data[mid]},{data[right]}"

投稿2023/01/24 01:21

編集2023/01/24 01:37
dtn8kp6s

総合スコア34

shinnnaka👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

1

str()に複数の値を与えてそれぞれ文字列にしてもらうというような使いかたはできません。

python

1str(data[left],data[mid],data[right])

2番目以降が他のパラメータだと解釈されて質問のエラーになっています。
print()は複数のものを受け取れますので、それぞれを文字列化して与えればいいでしょう。

python

1print(str(data[left]),str(data[mid]),str(data[right])))

ちなみに、値を表示したいだけであれば、str()を付けなくてもいけますよ。

python

1print(data[left],data[mid],data[right])

投稿2023/01/24 01:15

TakaiY

総合スコア10513

shinnnaka👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

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

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

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

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