01/10/2018, 01:14

Hỏi bài tập tìm vị trí của kí tự trong một chuỗi cho trước

Chào các bạn!

Mình mới học Python được hai hôm. Có một bài tập về hàm lặp như bên dưới mong các bạn giúp đỡ

Đề bài:

Ta có chuỗi sau: str = ‘Dai học Bach Khoa Ha noi’
Yêu cầu:
Tìm vị trí của ký tự ‘a’ thứ ba trong chuỗi trên.

P/s: Ngoài ra mình cũng được gợi ý dùng split() để giải bài này nhưng rất tiếc là cũng chưa nghĩ ra

Quân viết 03:19 ngày 01/10/2018

Hỏi nhỏ, nếu bạn là người phải tìm vị trí của chữ a thứ 3 trong chuỗi trên mà không phải bất kì cái máy nào thì bạn sẽ làm như thế nào, đừng nghĩ đến code vội

Ho Dong Tu viết 03:21 ngày 01/10/2018

Có lẽ mình sẽ đếm

Quân viết 03:20 ngày 01/10/2018

That’s right, thuật toán để giải bài này cũng chính là đếm.
Lấy từng kí tự tại mỗi vị trí và so sánh khi nào được kí tự a thứ 3 thì xuất kết quả ra

Ho Dong Tu viết 03:28 ngày 01/10/2018

Nhưng vấn đề ở đây đáp án phải là “ví trí” của kí tự bạn ạ

Tynk Huynk viết 03:29 ngày 01/10/2018

-Tạo 1 biến đếm khởi tạo = 0
-Duyệt chuỗi
+Gặp kí tự a thì biến đếm++,
+Nếu biến đếm = 3 không duyệt nữa đồng thời lấy vị trí của kí tự a đó

Zhang Jike viết 03:17 ngày 01/10/2018

Từ mảng arr =‘Dai hoc Bach Khoa Ha noi’
Bạn tạo 1 mảng arrB gồm index của tất cả các kí tự a. rồi in ra arrB(2) :>
Theo ngu kiến của mình là vậy

Ho Dong Tu viết 03:15 ngày 01/10/2018

Thật sự là ý tưởng của mình cũng tựa tựa như này. Tuy nhiên có thể do code gà nên vẫn chưa thành công

Zhang Jike viết 03:23 ngày 01/10/2018
#Thế này được k?
arr = "Dai hoc Bach Khoa Ha noi"
print [i for i in range(len(arr)) if arr[i] == 'a'][2]
Quân viết 03:16 ngày 01/10/2018

Đếm thì phải nhớ kết quả lại rồi chứ nhỉ, cách bạn đếm ngoài thực tế như thế nào thì áp dụng vào code là ra

viết 03:20 ngày 01/10/2018

bạn viết 1 vòng for in ra từng ký tự của str được thì bài này thêm 1 dòng if nữa là ra thôi

Đỗ Trung Quân viết 03:17 ngày 01/10/2018

1 cách viết khác trong python

str = 'Dai học Bach Khoa Ha noi'
c = 'a'

print( [pos for pos, char in enumerate(str ) if char == c])

tương đương

for position,char in enumerate(str):
    if char=='a':
        print position
Tynk Huynk viết 03:18 ngày 01/10/2018

cú pháp Python lạ nhỉ

rogp10 viết 03:16 ngày 01/10/2018

Viết đúng kiểu Python (Pythonic) thì ko có mấy câu for(i=…)

Tuấn Anh viết 03:28 ngày 01/10/2018

có thể hiểu là bạn tạo 1 array chứa từng phần tử trong cái chuỗi dhbkhn kia tam gọi là array a
tạo 1 biến count = 0
duyệt từng phần tử trong array đó a[i] từ i =0 đến i < array leng
nếu gặp bất kì thằng a[i] nào có value = a thì tăng biến count lên 1 , k thì duyệt tiếp
đến khi count = 3 thì in ra thằng a[i]

Tran Dang Lam viết 03:30 ngày 01/10/2018

array=“Dai hoc Bach khoa HN”
i=0
dem=0
while(dem<3) :
if array[i]==“a”:
dem+=1
vt=i
i+=1

print(“vi tri %d”%vt)

Codedao viết 03:28 ngày 01/10/2018

trong python có hàm positionF = line.index(“F”) hỗ trợ nè bạn.

Bài liên quan
0