LoginSignup
kiri___
@kiri___

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

疑似言語からPythonへの変換したコードを書きたい

解決したいこと

基本情報技術者試験の勉強をしています。
下記のリンクは、無料で閲覧できるサイトです。

ここの疑似言語で書かれているプログラムを勉強の為、書きたかったのですが、自力では不可能でした。お力添えを頂ければ幸いです。

発生している問題・エラー

エラーメッセージはありません。

該当するソースコード

ListHead ← 未定義の値

〇append(文字型: qVal)
ListElement: prev, curr
curr ← ListElement(qVal)
if(ListHeadが a  )
  listHead ← curr
else
  prev ← listHead
  while(prev.next が未定義ではない)
    prev ← prev.next
  endwhile
  prev.next ←  b
endif

自分で試したこと

自分でコードを書こうと思ったのですが、未定義などをどのように記述すればよいか分からず、何もできませんでした。

1

3Answer

こちらのコードでいかがでしょうか。
穴埋めの部分はあえてそのままにしてあるので、自力で埋めてください。

class ListElement:
    def __init__(self, qVal):
        self.val = qVal
        self.next = None

listHead = None

def append(qVal):
    global listHead
    curr = ListElement(qVal)
    if listHead is ( a ):
        listHead = curr
    else:
        prev = listHead
        while prev.next is not None:
            prev = prev.next
        prev.next = ( b )

Python で未定義を表すのに使うのはNoneです。
変数宣言は不要ですが、グローバル変数を書き換えたければglobalで事前指定する必要があります。余計な記述が必要になるので、初心者が疑似言語を Python に書き換えるのは、あまりお勧めしません。

1

疑似言語からPythonにするなど回りくどく、余計ややこしくする事を辞めましょう。疑似言語は実務からすればとても余計なモノですが、そこからの推測や書かれてる文面を理解する能力はつけておいたほうが良いです。

プログラムの大域の所に

ListElement: listHead ← 未定義の値

と書かれています。恐らく変数の宣言し、listHeadに「未定義の値」を代入いるものだと考えられます。PythonだとlistHead: ListElement = Noneしているようなものです。

コードの中でlistHeadは「未定義の値」を代入した以外、何かを代入した箇所がありますか?

0

Comments

  1. 正確にはlistHead: ListElement | None = Noneです。Pythonの型システムでは、Noneは明示的に許可しないと代入できません。

自分でコードを書こうと思ったのですが、未定義などをどのように記述すればよいか分からず、何もできませんでした。

では「未定義」の部分は置いておいて他の部分を書いてみましょう。
それでも十分勉強になると思いますし、分からない箇所がどうしても気になるならその部分についてのみ質問するとPythonでコードを書く力が付くようになるかと思います。

0

Your answer might help someone💌