Vòng lặp và điều kiện đúng/sai

Em đang làm 1 bài trong đó có 1 yêu cầu như sau:

Em tìm hiểu trên mạng thì thấy bài này dùng numpy, nhưng em vẫn chưa biết cách hoán vị kiểu gì, ai có thể giải thích giúp em được không ạ, em xin cảm ơn rất nhiều.

Có cần thiết là dùng NumPy không? P chỉ là mảng thông thường chứ ma trận gì!

1 Vòng lặp là xong việc rồi.
Lặp qua P, tại mỗi giá trị của P, in ra giá trị tương đương của s.
s[P[i-1]].
Nếu kết quả yêu cầu 1 chuỗi thì cộng chuôi thôi.

7 Likes
import random

# Cái string cần xử lý
my_word = 'daynhauhoc'
print('String ban đầu là:')
print(my_word)

# Convert cái string -> list
my_word = list(my_word)
print('\nBây giờ đã chuyển thành list:')
print(my_word)

# Đếm xem cái list vừa tạo có được bao nhiêu item
count = len(my_word)
print('\nCó ' + str(count) + ' phần tử, đang sắp xếp theo thứ tự này:')

# Tạo 1 list có số phần tử bằng với "count", bắt đầu từ 0
my_list = []
for item in range(0, count):
	my_list.append(item)
print(my_list)

# Xáo trộn thứ tự trong list
random.shuffle(my_list)
print("\nNếu thứ tự bị xáo trộn như này:")
print(my_list)

# Tạo 1 list với
list_of_unordered_letters = []

# Dùng loop để duyệt qua từng "số" trong my_list
for number in my_list:
	# Lấy "chữ" tương ứng với index là "số" bên trên, từ cái list "my_word"
	# và bỏ vào list vừa tạo
	list_of_unordered_letters.append(my_word[number])

print('\nThì các ký tự sẽ bị trộn như này này:')
print(list_of_unordered_letters)

# Convert list -> string và in ra
my_new_word = ''.join(list_of_unordered_letters)
print(my_new_word)

Output:

String ban đầu là:
daynhauhoc

Bây giờ đã chuyển thành list:
[‘d’, ‘a’, ‘y’, ‘n’, ‘h’, ‘a’, ‘u’, ‘h’, ‘o’, ‘c’]

Có 10 phần tử, đang sắp xếp theo thứ tự này:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Nếu thứ tự bị xáo trộn như này:
[7, 9, 8, 4, 0, 6, 3, 2, 5, 1]

Thì các ký tự sẽ bị trộn như này này:
[‘h’, ‘c’, ‘o’, ‘h’, ‘d’, ‘u’, ‘n’, ‘y’, ‘a’, ‘a’]
hcohdunyaa
[Finished in 0.1s]

6 Likes

Dạ em tìm trên mạng cách hoán vị thì nó lại ra numpy ạ :frowning:

ok anh, em cảm ơn anh rất nhiều ạ

List comprehension thôi :slight_smile:

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