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 đỡ :frowning:

Đề 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 :frowning:

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

3 Likes

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

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

3 Likes

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

  • 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 đó
2 Likes

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

1 Like

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 :frowning:

#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]
3 Likes

Đế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

2 Likes

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

2 Likes

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
5 Likes

cú pháp Python lạ nhỉ :grin:

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

4 Likes

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]

1 Like
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)

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

Phương thức này sẽ văng ValueError (ko hay, vì ko đáng để throw :smiley: ), dùng find sẽ ra -1.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?