#python #os.system
#python #os.system
Вопрос:
У меня есть следующий код, в котором я записываю вводимые пользователем данные, а затем я хочу проанализировать его и оценить каждый символ в строке, используя код ASCII для воспроизведения определенного файла .mp3:
Проблема в том, что этот код работает только для первого символа. Например, если у меня есть ввод, поскольку ab
я слышу только аудиофайл для a
и не b
import os
wrd=raw_input("Please write something: ")
wrd=(str(wrd)).lower()
wrd=list(wrd)
i=0
print (wrd[0:len(wrd):1])
for wrd[i] in wrd:
print wrd[i]
if ord((wrd[i]))==97:
os.system("start C:/Users/letters/a(1).mp3")
i =1
if ord((wrd[i]))==98:
os.system("start C:/Users//letters/b(1).mp3")
i =1
Комментарии:
1. вы используете
for
странным образом. Используйтеfor char in wrd:
, и вам не нужноi
2. что вы слышите при вводе
ba
? возможно, файл поврежден или вы используете неправильный путь.
Ответ №1:
Если имя файла mp3 всегда следует по пути «буква (1), mp3», вы можете сделать что-то вроде:
import os
wrd = input("Please write something: ")
wrd = wrd.lower()
for char in wrd:
try:
os.system("start " char '(1).mp3')
except:
ValueError
в противном случае вы можете использовать словарь и заполнить его правильным именем файла для каждой буквы:
db = {
'a': 'C:/Users//letters/a(1).mp3',
'b': 'C:/Users//letters/b(1).mp3'
# etc
}
...
try:
os.system("start " db[char])
...
Комментарии:
1. Это работает, но я думаю, что должно быть время.sleep() где-то, потому что очень быстро, вы можете услышать только последнюю букву строки, например, если на входе si: ab я слышу только букву b. Спасибо