環境
- OS: ArchLinux
- Julia 1.0.5
※ 2019/12/22 Base.prompt
の例を追加
キーボードからの入力
Python3でいうところの input
はJuliaではBase.prompt
を使います。
julia> Base.prompt("What's your name?") What's your name?: Bob # Bob と入力して Enter を押した。末尾の : は勝手につきます。 "Bob"
何も入力せずに Enter を押すと、空文字 ""
が、Ctrl-D を押すと nothing
が返ってきます。
julia> Base.prompt("What's your name?") What's your name?: "" julia> Base.prompt("What's your name?") What's your name?: julia> ans == nothing true
default を設定すると、何も入力せずに Enter が押された場合 default に設定したあと値が返ってきます。
julia> Base.prompt("Are you Japanese?", default="yes") Are you Japanese? [yes]: "yes"
prompt を出さずに入力を受ける場合は readline()
を使います。(Base.prompt
も内部的には readline()
を使っています。)
readline(io::IO=stdin; keep::Bool=false)
julia> a = readline() hoge # hoge を入力後 Enter "hoge" julia> a = readline() hoge piyo "hoge piyo" julia> split(a) # 文字列を分割する。カンマ , 区切りのときは split(a, ",") とする 2-element Array{SubString{String},1}: "hoge" "piyo" julia> a = readline() 1 "1" julia> parse(Int, a) # 整数に変換 1 julia> parse(Float64, a) # 浮動小数点に変換 1.0
任意の個数の入力を受ける
特定の文字が入力されたら停止する方法
0 が入力されたら停止させる例
julia> x = [] 0-element Array{Any,1} julia> while true a = readline() a == "0" && break push!(x, a) end hoge piyo fuga 0 julia> println(x) Any["hoge", "piyo", "fuga"]
Ctrl-D で停止する方法
readline
で入力待ちの状態で Ctrl-D (EOF) をすると空の文字列 ""
が代入されるので、それを終了条件に使います。
julia> x = [] 0-element Array{Any,1} julia> while (a = readline()) != "" # Base.prompt を使う場合は nothing を終了条件に使う。 push!(x, a) end hoge piyo fuga # <- ここで Ctrl-D をしている julia> println(x) Any["hoge", "piyo", "fuga"]