【Day4】练习

1,假定有下面的列表:

    names = ['fentiao','fendai','fensi','apple']

    输出结果为:'I have fentiao, fendai, fensi and apple.'

方法一:
'''
1,假定有下面的列表:
    names = ['fentiao','fendai','fensi','apple']
    输出结果为:'I have fentiao, fendai, fensi and apple.'
'''
names = ['fentiao','fendai','fensi','apple']
result = 'I have '
for i in range(len(names)):
    result += names[i]
    if i == len(names)-2:
        result += ' and '
    elif i == len(names)-1:
        result += '.'
    else :
        result += ', '
print(result)

【运行结果】

 方法二:
names = ['fentiao','fendai','fensi','apple']
print('I have '+', '.join(names[:len(names)-1]) + ' and '+names[-1]+'.')

【知识点】

  • string.join(list)方法,按string拼接list中元素
  • list[:]切片

2,已知一个数字列表,求所有元素和。

'''
已知一个数字列表,求所有元素和。
'''
li= [59, 54, 89, 45, 78, 45, 12, 96, 789, 45, 69]
sum_li = 0
for i in li:
    sum_li += i
print(sum_li )

3,将列表逆序输出,使用三种方式。

'''
3,将列表逆序输出,使用三种方式。
'''
a=[3,4,5,77,88,1]
# 方式一:切片
print(a[::-1])

a=[3,4,5,77,88,1]
# 方式二:list.reverse()
a.reverse()
print(a)

a=[3,4,5,77,88,1]
# 方式三:二分交换
total = len(a)
for i in range(total//2):
    temp = a[i]
    a[i] = a[-1-i]
    a[-1-i] = temp #a[i],a[-1-i]=a[-1-i],a[i]
print(a)

【知识点】

  • 算法,将中间位置的数左右两边调换
  • 赋值,a,b=b,a,可以实现互相调换赋值
以下是将之前day2练习生成的音乐添加混响效果并进行实时处理和显示的代码: ```matlab clc; clear; close all; % 生成音乐 fs = 44100; t = 0:1/fs:5; f1 = 440; f2 = 880; f3 = 1320; y = sin(2*pi*f1*t) + sin(2*pi*f2*t) + sin(2*pi*f3*t); % 创建音频播放器和图形窗口 sigPlayer = audioplayer(y, fs); myFigure = figure('Name', '实时混响'); waveAxes = subplot(2, 1, 1); axis(waveAxes, [0 numel(y)/fs -3 3]); waveAxes.NextPlot = 'replacechildren'; fftAxes = subplot(2, 1, 2); axis(fftAxes, [0 fs/2 0 100]); fftAxes.NextPlot = 'replacechildren'; % 设置音频播放器的参数 windLength = fs / 10; sigPlayer.TimerPeriod = windLength / fs; sigPlayer.TimerFcn = {@realtimeReverb, waveAxes, fftAxes, y, fs}; % 添加混响效果 reverbObject = reverberator('PreDelay', 0.5, 'WetDryMix', 0.5); % 创建实时波形和频谱图对象 realtimeWavePlot = animatedline(waveAxes); realtimeFFTPlot = bar(fftAxes, [], []); % 播放音乐 play(sigPlayer); function realtimeReverb(plr, ~, axwave, axfft, sigData, fs) persistent reverbObject; persistent ind; persistent indbase; if isempty(reverbObject) reverbObject = reverberator('PreDelay', 0.5, 'WetDryMix', 0.5); end if isempty(indbase) indbase = 1:numel(sigData); end windLength = plr.TimerPeriod * fs; ind = fix((plr.CurrentSample) / windLength) * windLength + indbase; segData = sigData(ind); % 混响处理 reverbAudio = reverb(reverbObject, segData); ydata_fft = fft(reverbAudio); ydata_abs = abs(ydata_fft(1:numel(segData)/2)); % 更新实时波形和频谱图的数据 addpoints(realtimeWavePlot, (1:numel(segData))/fs, segData); set(realtimeFFTPlot, 'ydata', log(ydata_abs)); drawnow; end ``` 这段代码首先生成了一个简单的音乐信号 `y`,然后创建了一个音频播放器对象 `sigPlayer` 和一个图形窗口 `myFigure`。在图形窗口中,创建了两个子图 `waveAxes` 和 `fftAxes`,用于显示实时波形图和频谱图。 接下来,设置音频播放器的参数,包括定时器周期和定时器函数。定时器函数 `realtimeReverb` 用于实时处理音频数据并更新图形。在定时器函数中,使用 `reverberator` 函数创建了混响效果对象 `reverbObject`,并对音频数据进行混响处理。然后,通过 FFT 算法计算音频数据的频谱,并将数据更新到实时波形图和频谱图中。 最后,通过调用 `play` 函数开始播放音乐,并启动定时器以实现实时处理和显示。 请注意,在运行此代码之前,您需要确保已经安装了 Matlab,并具有 `reverberator` 函数和 Day 2 练习生成的音乐信号 `y`。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cy-doit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值