đúng là list có thể thêm vô hạn. nhưng vấn đề mình đang mắc là làm sao mà đặt điểm dừng cho việc thêm liên tục đó là khi gặp kí tự vào là Enter từ bàn phím??? Làm như bạn là ngăn cách giữa các phần tử bằng dấu cách, sau đó split cái list để nó chia ra cũng khá ok rồi, nhưng đại ý của mình từ đầu là có vòng lặp hàm raw_input() cho việc thêm từng phần tử thì mỗi lần lặp mình được yêu cầu nhập giá trị thì phải enter để nó gán cho phần thử thứ i của list, và cứ thế cho đến khi kí tự mình nhập vào để gán cho phần tử là Enter thì sẽ break đc cái vòng lặp đó.
Làm sao để nhận được kí tự enter từ bàn phím
Cách của Minh Quan đúng như ý bạn nói rồi mà.
Mình test có lỗi đâu nhỉ? ô-o
chắc bạn k hiểu ý mình, bạn thử thay dấu cách bằng \n xem.
:)) Mình nhấn enter, ko hề có dấu cách nào ở dòng cuối. (Dòng trống đó)
à ha, đúng rồi, tại mình cứ nhìn trong cặp nháy đơn của bạn Minh Quan là dấu cách.
nhưng đây nó vẫn ko phải là nhận enter mà là nó nhận “không có gì” nên mới out khỏi vòng lặp.
Phím enter không có giá trị, nên bạn không thể “nhận giá trị” khi nhấn enter.
Thế thì bạn cứ thêm số bình thường, khi nào ngừng thì nhấn enter nó sẽ tự ngắt, việc gì phải phức tạp hóa vấn đề lên như vậy…
vậy cần gì phức tạp như vậy? Cứ nhập 1 số rồi cách ra nhập số khác, nhập xong thì enter, xong split by space là xong mà
Cần nói thêm là khi bạn nhập \n
thì đó là một chuỗi gồm hai ký tự là '\'
và 'n'
. Vậy nên khi bạn xuất ra nó sẽ có giá trị là '\\n'
.
đâu, có mà, trong C++ vẫn nhận đc, hàm getchar() đó.
mình chỉ đưa ra ví dụ minh họa như vậy thôi, chứ cái mình muốn biết vẫn là, làm sao ấn enter nó lưu đc giá trị vào biến như các phím kí tự khác để sau này đem so sánh hoặc sử dụng tùy mục đích.
ý mình không phải là nhập \n mà là mình ấn enter từ bàn phím để nó lưu kí tự enter vào biến như những kí tự thường khác.
À thế bạn viết 1 cái C++ đi, xong dịch ra python, chứ mình vẫn chưa hiểu ý bạn lắm
#include<iostream>
#include<conio.h>
using namespace std;
int main() {
char a;
a = getchar(); // ham getchar chi nhan mot va chi mot ki tu tu keyboard
// ki tu nay duoc luu vao a
if(a == '\n') cout<<"OK"<<endl;
else cout<<"Error !"<<endl;
return 0;
}
bạn chạy đoạn này thử xem. ý mình đại loại như này, nhưng mà mong muốn có một hàm như getchar() nhưng nhận đc nhiều kí tự trong một lần nhập , sorry nếu em hơi tham
.
À thế thì search google “getchar in python” là oke mà
đúng chính xác là cái này rồi bác @KhoaTran ơi, chuẩn ko chỉnh ạ ., thank bác
.
Mà cái modul stdin có phải để xử lí mấy một số tác vụ của C ko ạ, bác có thể giới thiệu thêm một vài modul ko ạ.
Oke mình gợi ý vậy thôi, bạn thử google xem nhiều cách hay lắm, rồi so sánh từng cách xem cách nào hợp lý thì dùng :V
Cách trên là readline mà, nghĩa là nó chờ enter, nếu bạn thử phím a,b,c,d thì nó có dừng ngay đâu, nó chờ enter nó mới kết thúc, mình thấy vấn đề của bạn thì msvcrt.getch
mới đúng
>>> import msvcrt
>>> msvcrt.getch()
'0'
>>> msvcrt.getch()
'\r'
>>> msvcrt.getch()
'a'
>>> msvcrt.getch()
'e'
>>> msvcrt.getch()
'h'
>>>
hì, đúng là của bác Khoa thì chỉ chờ enter chứ phím khác là ko đc thật .
ok, để e tìm hiểu thêm cái msvcrt.getch . thank bác .
Trong Python bạn gõ như sau:
>>> import sys
>>> help(sys.stdin)
Mình cũng không rõ có thư viện nào trong Python cung cấp các hàm giống như trong C không.