Julia 从脚本请求用户输入

Posted

技术标签:

【中文标题】Julia 从脚本请求用户输入【英文标题】:Julia request user input from script 【发布时间】:2013-07-03 00:28:16 【问题描述】:

如何在 Julia 中通过正在运行的脚本请求用户输入?在 MATLAB 中,我会这样做:

result = input(prompt)

谢谢

【问题讨论】:

【参考方案1】:

最简单的做法是readline(stdin)。这就是你要找的东西吗?

【讨论】:

我们可以为此拥有一个更复杂的类似 readline-library 的系统,但现在这可以解决问题。 Keno 对我们的 repl 的纯 Julia 重新实现将提供一个很好的框架来做这样的交互式事情。 在 julia 0.7 及更高版本(可能是 0.6)上,现在是 stdin【参考方案2】:

我喜欢这样定义:

julia> @doc """
           input(prompt::AbstractString="")::String

       Read a string from STDIN. The trailing newline is stripped.

       The prompt string, if given, is printed to standard output without a
       trailing newline before reading input.
       """ ->
       function input(prompt::AbstractString="")::String
           print(prompt)
           return chomp(readline())
       end
input (generic function with 2 methods)

julia> x = parse(Int, input());
42

julia> typeof(ans)
Int64

julia> name = input("What is your name? ");
What is your name? Ismael

julia> typeof(name)
String

help?> input
search: input

  input(prompt::AbstractString="")::String

  Read a string from STDIN. The trailing newline is stripped.

  The prompt string, if given, is printed to standard output without a trailing newline before reading input.

julia>

【讨论】:

很好的答案,这很有帮助。【参考方案3】:

检查提供的答案是否与预期类型匹配的函数:

函数定义:

function getUserInput(T=String,msg="")
  print("$msg ")
  if T == String
      return readline()
  else
    try
      return parse(T,readline())
    catch
     println("Sorry, I could not interpret your answer. Please try again")
     getUserInput(T,msg)
    end
  end
end

函数调用(使用):

sentence = getUserInput(String,"Write a sentence:");
n        = getUserInput(Int64,"Write a number:");

【讨论】:

【参考方案4】:

现在在 Julia 1.6.1 中,只需键入:

num = readline()

是的!没有任何参数,因为 readline() 函数的 IO 位置参数的默认值 是“stdin”。所以在上面的例子中,Julia 将读取用户的输入并将其存储在变量“num”中。

【讨论】:

【参考方案5】:

首先我跑了 Pkg.add("日期") 那么

using Dates

println()
print("enter year  "); year = int(readline(STDIN))
print("enter month "); month = int(readline(STDIN))
print("enter day   "); day = int(readline(STDIN))

date = Date(year, month, day)
println(date)

【讨论】:

以上是关于Julia 从脚本请求用户输入的主要内容,如果未能解决你的问题,请参考以下文章

批处理脚本从用户获取文件列表输入以馈送到 WinSCP

处理用户输入与显示数据------------(从键盘输入的命令read,对输入计时计数)

从用户获取输入到包含空格的路径(bash脚本)[重复]

shell脚本处理用户输入

shell脚本处理用户输入

shell脚本处理用户输入