2016-08-07 3 views
0
import subprocess 

digit = [1,2,3,4] 
subprocess.call('espeak -s 120 -ven ' + str(digit) +'--stdout | aplay', shell=True) 

Звук, который я слышу, является только «одним», который является только первым компонентом списка. Как мне написать код, чтобы он объявил «Один-два-три-четыре»?Subprocess.call как отменить компоненты в списке

ответ

1

Используйте цикл для перебора по digits (обратите внимание, что я изменил имя списка на digits). Пока вы на нем, вы можете использовать str.format для удобства чтения.

import subprocess 

digits = [1, 2, 3, 4] 
for digit in digits: 
    subprocess.call('espeak -s 120 -ven {} --stdout | aplay'.format(digit), shell=True) 
+0

Hi @DeepSpace, спасибо за ответ. Я думаю, что это очень близко, но выход звука - «один-два-толстый-три-толстый-четыре-толстый». Почему «толстый» высказывается? Извините, я только начал изучать питон. – sam

+0

@sam Я не уверен, поскольку я не знаком с espeak. Он может быть чувствительным к пробелу перед флагом '--stdout', отсутствующим в моем примере. Попробуйте удалить его: 'subprocess.call ('espeak -s 120 -ven {} - stdout | aplay'.format (digit), shell = True)' – DeepSpace

+0

Пробовал. Тем не менее тот же вывод, «one-stout-two-stout-three-stout-four-stout». Спасибо за помощь в любом случае. – sam

 Смежные вопросы

  • Нет связанных вопросов^_^