Demikian pula dengan pertanyaan ini, saya ingin mengevaluasi (dalam mode org) blok kode sumber Python yang berisi instruksi "input" tetapi saya tidak dapat menemukan cara untuk melakukan evaluasi interaktif (dengan input pengguna) selama evaluasi atau untuk memberikannya beberapa input yang diketahui di muka (disimpan dalam file misalnya).
Kendala saya adalah menggunakan input
instruksi secara eksplisit karena semua ini harus dimasukkan dalam buku teks untuk siswa.
Contoh kode:
#+BEGIN_SRC python :results output
a= input("Value")
print(a)
#+END_SRC
Apakah mungkin untuk melakukan evaluasi interaktif atau mensimulasikannya (dengan memberikan kode sumber input palsu)?
export
untuk menghasilkan kode contoh Anda untuk siswa ke dalam format lain, misalnya html?noweb
mode-org yang memungkinkan Anda menguji & mengekspor kode Anda dengan hasil.Jawaban:
Berikut adalah pendekatan alternatif yang menggunakan file kusut yang tidak diekspor untuk menggantikan fungsi input.
sumber
Mengevaluasi
python
blok kode menggunakan pemrograman melek huruf dalam mode-org.Gunakan
:var
tajuk untuk menetapkan variabel dan menguji kode Anda.Contoh 1 - cetak (a)
Tetapkan
hello world
untuka
.Contoh 2 -
print(a + b)
Tetapkan
1
untuka
.Tetapkan
2
untukb
.Contoh 3 -
print(a,b,c)
Value of a
masukThanks
Value of b
masuk4
.Ketika diminta untuk
Value of c
masukyour question
.Contoh 1 -
print(a)
Tetapkan
hello world
untuka
.Contoh 2 -
print(a + b)
1
untuka
.Tetapkan
2
untukb
.Contoh 3 -
print(a,b,c)
Value of a
masukThanks
Value of b
masuk4
.Ketika diminta untuk
Value of c
masukyour question
.sumber
noweb
,, dalam fitur mode-org luar biasa dan sangat berguna! Harap beri tahu saya jika Anda ingin contoh kode tambahan. Jika Anda membutuhkan sesuatu yang tidak sesuai dengan format T&J, saya senang memposting ke repositori GitHub saya.Saya tidak berpikir itu mungkin untuk mendapatkan input Python benar-benar interaktif dengan org-babel.
Anda bisa menggunakan pembukaan untuk mendefinisikan kembali fungsi input sehingga mengembalikan apa yang Anda inginkan untuk mensimulasikan penggunaan input, misalnya di sini kita membuatnya tampak seperti pengguna mengetikkan "3".
Bergantung pada apa yang siswa lihat yang diekspor, mereka mungkin tidak melihat bahwa Anda telah melakukan ini.
sumber
Sebagai pelengkap dari solusi John Kitchin, saya mengusulkan untuk menggunakan generator untuk memberikan nilai-nilai berturut-turut yang akan "memberi makan"
input(...)
fungsi dan mengembalikanstr
objek secara sistematis.sumber