Saya ingin mendapatkan string dari pengguna, dan kemudian memanipulasinya.
testVar = input("Ask user for something.")
Apakah ada cara agar testVar menjadi string tanpa saya meminta pengguna mengetikkan jawabannya dalam tanda kutip? yaitu "Halo" vs. Halo
Jika pengguna mengetikkan Hello, saya mendapatkan kesalahan berikut:
NameError: name 'Hello' tidak didefinisikan
python
string
python-2.7
Mike Lee
sumber
sumber
input
secara otomatis panggilaneval()
Jawaban:
Gunakan
raw_input()
alih-alihinput()
:input()
sebenarnya mengevaluasi input sebagai kode Python. Saya sarankan untuk tidak pernah menggunakannya.raw_input()
mengembalikan string kata demi kata yang dimasukkan oleh pengguna.sumber
input
sekarang berfungsi seperti ini, dan raw_input hilang.input()
ini bukan fungsi yang berguna, dan saya tidak merekomendasikan menggunakannya.Fungsi
input
ini juga akan mengevaluasi data yang baru saja dibaca sebagai kode python, yang sebenarnya bukan yang Anda inginkan.Pendekatan generik adalah untuk memperlakukan input pengguna (dari
sys.stdin
) seperti file lainnya. MencobaJika Anda ingin tetap singkat, Anda dapat menggunakan
raw_input
yang samainput
tetapi menghilangkan evaluasi.sumber
readline
- ini akan memberikan fitur yang mirip dengan bash (sejarah out-of-the-box, penyelesaian otomatis akan memerlukan beberapa kerja keras)Kita dapat menggunakan
raw_input()
fungsi dalam Python 2 daninput()
fungsi dalam Python 3. Secara default fungsi input mengambil input dalam format string. Untuk tipe data lain, Anda harus memberikan input pengguna.Dalam Python 2 kita menggunakan
raw_input()
fungsi. Itu menunggu pengguna untuk mengetik beberapa input dan tekanreturn
dan kita perlu menyimpan nilai dalam variabel dengan casting sebagai tipe data keinginan kita. Hati-hati saat menggunakan tipe castingDalam Python 3 kita menggunakan fungsi input () yang mengembalikan nilai input pengguna.
Jika Anda memasukkan string, int, float, eval akan diambil sebagai input string
Jika Anda memasukkan string untuk pemain int
ValueError: invalid literal for int() with base 10:
Jika Anda memasukkan string untuk float cast
ValueError: could not convert string to float
Jika Anda memasukkan string untuk eval cast,
NameError: name ' ' is not defined
kesalahan tersebut juga berlaku untuk Python 2.sumber
Jika Anda ingin menggunakan input alih-alih raw_input dalam python 2.x, maka trik ini akan berguna
Setelah itu,
akan bekerja dengan baik.
sumber
sumber
Kode Kerja saya dengan perbaikan:
sumber
Ini adalah pekerjaan saya untuk gagal aman jika saya perlu pindah ke python 3 di masa depan.
sumber
Masalah ini tampaknya diatasi dalam Python versi 3.4.2.
Akan bekerja dengan baik.
sumber
input
setara dengan Python 2.xraw_input
(lihat docs.python.org/3.0/whatsnew/3.0.html#builtins ); ini adalah masalah khusus untuk 2.x.