Trong python input() có tác dụng gì

raw_input []: Hàm này hoạt động trên các phiên bản cũ hơn [như Python 2.x]. Nó lấy chính xác những gì được gõ từ bàn phím, chuyển đổi nó thành giá trị chuỗi và sau đó trả nó về biến mà chúng ta muốn lưu trữ. Ví dụ

Mình đang học python và mình thắc mắc sự khác biệt giữa hàm input với hàm raw_input. Theo quyển Learn Python The Hard Way thì mình thấy tác giả Zed Shaw bảo là không nên dùng input vì lý do bảo mật.

Mọi người có thể giải thích giúp mình điểm này không?

4 Likes

Lỗi về raw_input trong Python

Elif và if trong Python

Gio [Gió] March 8, 2015, 2:11am #2

Trong python 2 thì raw_input sẽ đọc 1 dòng từ stdin [bỏ đi kí tự '\n' cuối cùng]. Còn input sẽ eval từ raw_input đọc được.
###ví dụ:

raw_input[] ### nhập '1+2' ### => '1+2' input[] ### => 3

Ở python 3 thì họ không dùng raw_input nữa mà dùng input tương đương với raw_input ở python 2
Lí do bảo mật chắc là eval từ input rồi

8 Likes

ltd [Lê Trần Đạt] March 9, 2015, 2:28am #3

À, đã hiểu, cảm ơn @Gio nhé. Vậy ở Python 3 người ta đã bỏ eval từ intput rồi đúng không?

3 Likes

zombieland97 [khong co ten] March 29, 2015, 12:00am #4

stdin và eval có nghĩa là gì vậy anh ?

ltd [Lê Trần Đạt] March 30, 2015, 3:32am #5

stdin là standard input. Có thể hiểu là các thông tin nhập vào từ bàn phím. Nhưng thực ra nó cũng có thể là Pipe. Google tiếp nhé, đừng hỏi pipe là gì ^^

eval là chỉ việc python thực thi một dòng lệnh nào đấy. Trong trường hợp này thì mình nhập cái gì vào từ stdin thì python sẽ coi thông tin đó là code và sẽ chạy nó.

4 Likes

phamhungthinh [Pham Hung Thinh] July 10, 2016, 4:06pm #6

cool quá


Vì thử sự khác nhau giữa raw_input với input trên cả 2 phiên bản python 2 và python 3 mà mình phát hiện ra là riêng với lệnh print ở 2 phiên bản khá khác nhau.
Python 2: viết print hay print[] đều được
Python 3: bắt buộc phải viết print[] lệnh mới chạy.

Về cơ bản là mình thích Python 3 hơn vì đơn giản, tinh gọn hơn. Ấy vậy mà lão tác giả cứ bắt học python 2

4 Likes

Minn [Hồng Hải Nguyễn] September 28, 2016, 5:48pm #7

Đây là bài code tìm số lớn thứ 2 trong dãy i số đc nhập:
i = int[input[]]
lis = list[map[int, raw_input[].split[]]][:i]
z = max[lis]
while max[lis] == z:
lis.remove[max[lis]]

print max[lis]

Python 2 vẫn dùng đc cả raw_input[] và input[].Mọi người phân biệt giúp mình với

1 Like

htl [[emailprotected]] September 28, 2016, 10:47pm #8

Trong python 2 thì input sẽ chạy đoạn text mình nhập vào như 1 đoạn code, raw_input thì ko chạy mà lưu những gì mình nhập vào thành 1 string.

2 Likes

nicklauri [Khoa NTA] May 29, 2017, 1:41am #9

Trong Python2 input[[prompt]] tương đương với eval[raw_input[[prompt]]]. Và bạn sẽ đi tìm hiểu hàm eval[] [evaluate - nó xem dữ liệu bạn đưa vào là code và thực thi nó]

Và rằng bạn sẽ được khuyến cáo là không nên dùng input[] trong python2 [vì lý do bảo mật], cho nên bạn phải dùng raw_input[] trong tất cả các bài tập của bạn.
Một vài ví dụ đơn giản với eval:import sys def hello[]: print 'hello[]: this function has been called.' somevar = 69 # gọi 4 lần cho 4 ví dụ :3 print input['eval [1]: '] print input['eval [2]: '] print input['eval [3]: '] print input['eval [4]: ']

Output:

eval [1]: hello[]
hello[]: this function has been called.

eval [2]: somevar
69

eval [3]: [lambda : sys.stdout.write[Hello world\n]][]
Hello world

eval [4]: os.system[uname -a]
Linux kproj 4.6.0-kali1-amd64 #1 SMP Debian 4.6.4-1kali1 [2016-07-21] x86_64 GNU/Linux

Bạn thấy đó, nếu bạn dùng nó trong cách script của bạn thì nguy hiểm biết chừng nào khi họ lợi dụng nó như lỗ hỗng để thực thi lệnh bất hợp pháp.

4 Likes

Input and raw_input

lang_tu [lảng tử] May 27, 2017, 9:06am #10

python 2 sao mình dùng input k đc pạn?

lang_tu [lảng tử] May 27, 2017, 9:07am #11

bạn code python 2, hay 3 vậy, sao mình code theo như bạn mak dùng python 2 nó báo lỗi

nicklauri [Khoa NTA] May 29, 2017, 1:39am #12

Python 2 nhé bạn. Python 3 không chạy được đâu

lang_tu [lảng tử] May 29, 2017, 8:11am #13

sao mình dùng python 2 nó lại báo lỗi chỗ intput ta, nếu thay = raw_input[] thì hết lỗi

nicklauri [Khoa NTA] May 29, 2017, 8:29am #14

Bạn phải làm giống y như mình làm thì mới được bạn ơi :v

banhmisg9509 [Nguyễn Duy Hùng] May 29, 2017, 8:30am #15

Đó là vì input[] trong python2 tương đương với eval[raw_input[]]. Hàm eval nhận vào một string và định giá trị của string đó, cho nên giả sử bạn có câu lệnh name = input[] mà mình đánh vào là hung thì nó sẽ eval[hung] xem biến hung này có giá trị là gì thì gán giá trị của hung cho name ngược lại nếu ko có biến nào là hung thì sẽ báo lỗi. Hàm input trong python2 có thể được dùng chỉ để nhập số vì eval[] nếu nhận vào chuỗi vd như 12345 hoặc 123.45 thì cho ra giá trị của số luôn.

Hàm input [] dùng để làm gì?

Input là một hàm được sử dụng để đọc các tệp đầu vào. Kết quả của hàm này một chuỗi trả về nội dung của tệp.

Trong Python các từ Print input là gì?

Python cũng giống như một số ngôn ngữ phổ biến khác, việc lấy giữ liệu từ người dùng cũng có thể được thực hiện thông qua hàm input[], ngoài ra để đưa ra một giá trị hiển thị cho người dùng cũng có thể thực hiện được thông qua hàm print[].

Kiểu dữ liệu của hàm input [] trả về là gì?

Hàm input[] Trong đó [promt] thông báo sẽ hiển thị ra màn hình, gợi ý thông tin người dùng cần nhập vào chương trình. Chú ý: Hàm input[] trả về một chuỗi ký tự, ngay cả khi người dùng nhập vào một số thì nó cũng chuyển đổi thành chuỗi.

Trong Python để nhập dữ liệu từ bàn phím ta sử dụng hàm gì?

Trong Python để nhập liệu từ bàn phím ta dùng hàm input[]. Giá trị nhập vào của hàm input[] thường là kiểu chuỗi, do đó ta cần chuyển kiểu nếu như muốn lưu trữ giá trị nhập vào không phải kiểu chuỗi.

Chủ Đề