Skip to content

Input() function #259

Open
Open
@ivan-pi

Description

@ivan-pi

Is there any interest to have a Python-like input() function?

Effectively, this would be a convenience function for the following pattern:

    write(output_unit,'(A)',advance='no') 'Enter a value: '
    read(input_unit,'(A)') buffer
    str = trim(buffer)

the purpose of which is to collect some user input together with a friendly prompt message. The Fortran interface could be something like:

  impure function input(prompt,stat) result(str)
    character(len=*), intent(in), optional :: prompt
      !! Text that is displayed as a prompt.
    integer, intent(out), optional :: stat
      !! Status flag used to raise an exception.
    character(len=:), allocatable :: str
  end function

In Python 2 they used to have two versions, input and raw_input. The first would try to evaluate the input argument and return it with the correct type, while raw_input would return a string. In Python 3 raw_input was removed and input returns a string. The user must then explicitly use eval or a type-conversion routine like int or float to get the desired value.

One issue I don't know how to deal with yet in Fortran are trailing whitespaces. The Python function preserves trailing whitespaces:

>>> s = input('Enter a value: ')
Enter a value:     4     
>>> s
'    4    '

To achieve this in Fortran it might be necessary to interface with C.

Metadata

Metadata

Assignees

No one assigned

    Labels

    easyDifficulty level is easy and good for starting into this projectenhancementNew feature or requestgood first issueGood for newcomerstopic: utilitiescontainers, strings, files, OS/environment integration, unit testing, assertions, logging, ...

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions