91293


Python始めたばかりで初歩的な質問ですみません。

テキストエディタに書いたプログラムからIDLEに出力する際に、

[code]

    print（変数や文字列など）
    
[/code]

としないとIDLE側で出力できないと思っていましたが、  
とある書籍のプログラム例（古くからあるハングマンというゲーム）で  
printの記載がなくてもIDLEでプログラムを走らせることができました。

具体的には、テキストエディタのプログラムの最後が

[code]

    hangman("cat")
    
[/code]

となっており、ゲームが終了するとIDLEのウィンドウに

[code]

    >>> cat
    
[/code]

と出力されます。

`print(hangman("cat"))` としても cat と出ますが、

[code]

    >>> cat
    >>> None
    
[/code]

と、’None'が一緒に出てきました。

これまで勉強してきたコードではテキストエディタでprintをつけないと、  
IDLEでの出力がエラーは出ずに空白の出力になっていたので、  
テキストエディタにprint〜と記載しないとダメだとおもっていましたが、  
何が起こっているのでしょうか。教えてください。

**対象のプログラム**

[code]

    def hangman(word): 
        wrong=0 
        stages=["", 
                "________ ",
                "|        ", 
                "|    |   ", 
                "|    O   ", 
                "|   /|\  ", 
                "|   / \  ", 
                "|        " 
                ] 
        rletters=list(word) 
        board=["_ "]*len(word) 
        win=False 
        print("ハングマンへようこそ！！")
        while wrong<len(stages)-1: 
            print("\n") 
            msg="文字を予想してね:" 
            char=input(msg) 
            if char in rletters:
                cind=rletters.index(char)   
                board[cind]=char 
                rletters[cind]='$' 
            else: 
                wrong+=1 
            print("".join(board)) 
            e=wrong+1 
            print("\n".join(stages[0:e]))
            if "_ " not in board: 
                print("あなたの勝ち！！") 
                print("".join(board)) 
                win=True 
                break
        if not win:
            print("\n".join(stages[0:wrong+1])) 
            print("あなたの負け！正解は{}。".format(word)) 
    
    hangman("cat") 
    
[/code]


CC BY-SA 4.0
2022-09-23T12:23:19.033
91261
2022-09-25T16:48:45.573
2022-09-25T16:48:45.573
3060
54499
question
python python3
IDLEに出力する際のテキストエディタに記載するprint()の件


コマンドラインから `python` (もしくは環境によっては `py` など) で起動すると インタープリターが起動し,
[対話モード(Interactive
Mode)](https://docs.python.org/ja/3/tutorial/interpreter.html#interactive-
mode) になります  
いくつか指定した場合(一挙にコピペしたときなど), 最後に指定した分の結果が表示(print)されます  
(対話モードかどうかは 三つの「大なり記号」 (`>>>`) で判別可能)

(Pythonに限らず)このようなモードは, REPL (Read-Eval-Print Loop) とも呼ばれます  
参考: <https://ja.wikipedia.org/wiki/REPL>

`idle` はその tkinter GUI 版 (というだけ)

[code]

    Python 3.10.6 | packaged by conda-forge | (main, Aug 22 2022, 20:36:39) [GCC 10.4.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 1+1
    2
    >>> def fn(s):
    ...   return 'hello ' + s
    ...
    >>> fn('world')
    'hello world'
    
[/code]

* * *

【追記】

組み込み関数 [`print`](https://docs.python.org/ja/3/library/functions.html#print)
を呼び出しても表示されるし, 対話モードの「大なり記号」 (`>>>`) を使った(計算などの)結果も表示されます。  
ある関数(この場合 `hangman`)内で組み込み関数 `print`が利用されていれば, その場合も表示されるでしょう


CC BY-SA 4.0
2022-09-23T13:03:12.040
91262
2022-09-25T13:17:48.877
2022-09-25T13:17:48.877
43025
43025
91261
answer


> hangman("cat")  
>  となっており、ゲームが終了するとIDLEのウィンドウに  
>  ＞＞＞cat

関数hangmanの中でprint()が呼ばれている（使われている）ためhangman()を呼ぶと`cat`が出力されます。

> print(hangman("cat"))としてもcatと出ますが、  
>  ＞＞＞cat  
>  ＞＞＞None  
>  と、’None'が一緒に出てきました。

その`cat`は`hangman`の中で出力されているものです。また。`None`は`hangman`の戻り値が出力されているものです。（戻り値が設定されていない関数の場合`None`が返ります。）


CC BY-SA 4.0
2022-09-25T11:39:58.993
91293
2022-09-25T11:39:58.993
39819
91261
answer