Ini bukan tantangan. Saya bertanya-tanya apakah mungkin untuk mendapatkan input pengguna ke dua variabel terpisah dalam python (2 atau 3) dengan kurang dari 19 byte. Ini semua yang terpendek yang bisa saya dapatkan:
a,b=input(),input()
a=input();b=input() (newline replaced with semicolon for readability)
i=input;a,b=i(),i()
Apakah ada cara yang lebih pendek untuk melakukan ini?
a,b=sys.argv[1:2]
atau apa pun tetapi kemudian Anda memerlukanimport sys
(kan?)a,b=input().split()
akan menjadi solusi 19 byte, bukan perbaikan. Perhatikan bahwa itu berarti a dan b adalah string dan input dimasukkan dalam sekali jalan yang dipisahkan oleh spasi.a,b=input()
dalam Py2Jawaban:
Jika meminta pengguna tidak masalah, ini sedikit lebih pendek daripada
eval
3 atau lebih:Ini juga lebih pendek bahkan jika meminta tidak ok:
Sayangnya, ide xnor tidak menyimpan apa pun untuk 2 input karena masih lebih lama (19 byte). Namun jika Anda memiliki beberapa string (atau sesuai iterable) dengan panjang yang sesuai sudah (karena sihir?) Maka itu bisa lebih pendek.
xnor menemukan contoh string ajaib untuk 3 input hanya di Python 2:
Ini juga mensyaratkan bahwa prompt tidak penting.
Trik ini sebenarnya membantu menghemat byte untuk sejumlah besar input dengan menggunakan
1eX
notasi (mendapatkan input x + 3):Penjelasan:
map
Fungsi Python melakukan fungsi yang diteruskan pada setiap elemen iterable yang juga diteruskan ke sana, dan mengembalikan daftar (atau objek peta) yang berisi hasil dari panggilan ini. Sebagai contoh pertama, peta dapat diuraikan menjadi:sumber
map(input,'xxx')
sama panjang untuk 3 vars, lebih baik untuk 2, dan lebih buruk untuk 4+.map(input,`id`)
lebih pendek :-). Begitu pulamap(input,`.1`)
untuk 19 input.a,b,c=map(input,`.5`)
apakah menyimpan char untuk 3 input, karena.5
direpresentasikan sebagai0.5
.Untuk 3 atau lebih input, ini lebih pendek:
sumber
Perhatikan bahwa kecuali jika pertanyaan menentukan jenis input atau memerlukan program lengkap, Anda dapat mengambil input sebagai argumen fungsi , memotong kebutuhan
input()
. Jika ini bukan opsi, yang berikut ini dapat membantu dalam kasus tertentu.Jika Anda ingin satu karakter dalam variabel
a
danb
, Anda dapat menggunakanMemasukkan string 2 karakter akan menghasilkan karakter pertama yang ditugaskan
a
dan karakter kedua yang ditugaskanb
. (Kurang dari 2 atau lebih dari 2 karakter dalam string akan memberikan kesalahan.)Jika Anda memerlukan lebih dari satu karakter per variabel maka pendekatan ini tidak akan berfungsi. Ini masih bisa digunakan untuk memasukkan 2 angka tunggal sebagai string. Jika angka di atas 9 diperlukan maka seluruh karakter input potensial dapat diartikan sebagai angka.
Perhatikan bahwa ini juga berfungsi untuk lebih dari 2 variabel:
Ini berfungsi karena dalam Python string adalah urutan karakter, dan dapat digunakan di mana saja urutan diharapkan.
sumber