几行代码能干出什么事

印象中,能干很多事的代码肯定是很长很长的。其实不然。几行代码也可以干出很棒的事呢。

先看看一行代码。

Python


>>> print("Hello World")
Hello World


Java
public class test{public static void main(String[] args){System.out.println("Hello World");}}
Hello World

这行代码只不过是输出Hello World,很简单。只不过这个Java也……印证了“Java有一种超能力,就是将中小型应用编程大型的……”。

Python


>>> for i in range(20):print("*" * 50)
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************
**************************************************

哇,星星图呀!没想到一行代码也能做出星星图!

继续。

>>> print("\n".join([" ".join(["{0} x {1} = {2}".format(j, i, j*i) for j in range(i)]) for i in range(10)]))


0 x 1 = 0
0 x 2 = 0 1 x 2 = 2
0 x 3 = 0 1 x 3 = 3 2 x 3 = 6
0 x 4 = 0 1 x 4 = 4 2 x 4 = 8 3 x 4 = 12
0 x 5 = 0 1 x 5 = 5 2 x 5 = 10 3 x 5 = 15 4 x 5 = 20
0 x 6 = 0 1 x 6 = 6 2 x 6 = 12 3 x 6 = 18 4 x 6 = 24 5 x 6 = 30
0 x 7 = 0 1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42
0 x 8 = 0 1 x 8 = 8 2 x 8 = 16 3 x 8 = 24 4 x 8 = 32 5 x 8 = 40 6 x 8 = 48 7 x 8 = 56
0 x 9 = 0 1 x 9 = 9 2 x 9 = 18 3 x 9 = 27 4 x 9 = 36 5 x 9 = 45 6 x 9 = 54 7 x 9 = 63 8 x 9 = 72

天哪,九九表都行?服了!

甚至……

python -m http.server 8000

这行代码并不是Python代码,而是在终端输入。这是打开http://localhost:8000就可以看到你的电脑上的文件了。

可惜这个网址别人不能访问。

继续。

>>> print(list(filter(lambda x:all(map(lambda p:x%p != 0, range(2,x))), range(2,100))))
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
OR
>>> for i in list(filter(lambda x:all(map(lambda p:x%p != 0, range(2,x))), range(2,100))):print(i)
2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

输出一百以内的质数竟然只需要一行?服了!

>>>import antigravity

这个可以写成

python -m antigravity

它会打开我们的浏览器并显示这个页面。

如果你没有Python,也可以输入网址https://xkcd.com/353/来打开。

我们再来看两行代码。

C++选手表示自己终于能上场了。我们来看一看他的表演。

C++


#include<iostream>
void main(){std::cout<<"Hello World"<<std::endl;}

什么呀,不就是个HelloWorld的吗!无语。

Python选手也在嘲笑C++,我们继续看Python的表演。

>>> import urllib.request, re
>>> print(re.findall("<title>(.*?)</title>", urllib.request.urlopen("https://tieba.baidu.com").read().decode("utf-8")))
['百度贴吧——全球最大的中文社区']

很熟悉,对吧?这就是我们在《Python爬虫&nbsp;|&nbsp;urllib和正则表达式》这篇文章中的源代码,只不过是简单了一点。

我们继续。

import requests
print(requests.get(url="https://www.baidu.com", headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)Chrome/80.0.3987.163 Safari/537.36 "}).text)

额,输出就不看了,太长了。毕竟是整个百度的源代码呢!

怎么样,是不是颠覆了你对代码的想象呢?再见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SVPWM(Space Vector Pulse Width Modulation,空间矢量脉宽调制)是一种常用的电力电子变换器控制技术,用于产生三相交流电压。以下是一个简化的几行代码实现SVPWM的示例: ``` // 输入:三相电流Ia, Ib, Ic,与电网频率f // 输:PWM波形对应的占空比duty_a, duty_b, duty_c // 计算电角度theta theta = 2 * pi * f * t // 计算矢量幅值Va, Vb, Vc Va = Ia * sin(theta) Vb = Ib * sin(theta - 2*pi/3) Vc = Ic * sin(theta + 2*pi/3) // 计算三相电压矢量的模长Vmax和相角alpha Vmax = max(abs(Va), abs(Vb), abs(Vc)) alpha = atan2(Vb, Va) // 使用Vmax和alpha计算波形占空比 duty_a = (Vmax * cos(theta - alpha)) / Vdc + 0.5 duty_b = (Vmax * cos(theta - alpha - 2*pi/3)) / Vdc + 0.5 duty_c = (Vmax * cos(theta - alpha + 2*pi/3)) / Vdc + 0.5 // 控制PWM占空比不超过0和1之间 duty_a = max(0, min(duty_a, 1)) duty_b = max(0, min(duty_b, 1)) duty_c = max(0, min(duty_c, 1)) ``` 以上代码假设已经给了三相电流和电网频率,通过计算得到了三相电压矢量的模长和相角,然后根据SVPWM算法计算了PWM波形对应的占空比。其中Vdc表示电压直流分量,t表示时间。最后的控制语句用于确保PWM占空比在0到1之间。实际上,SVPWM的实现还涉及到周期和触发逻辑等更多的细节,上述代码仅为实现的简化示例。 ### 回答2: svpwm(Space Vector Pulse Width Modulation,空间矢量脉宽调制)是一种用于控制交流电机的调制技术,通过将直流电压转换为正弦波形的交流电压来实现电机的精确控制。以下是一个用几行代码实现svpwm的示例: ''' import math def svpwm(theta): # 定义电压幅值 Vdc = 320 # 直流电压幅值 Vm = Vdc / math.sqrt(3) # 有效值计算 # 将角度转换为弧度 theta_rad = math.radians(theta) # 计算电压矢量的系数 alpha = math.sin(theta_rad) * Vm beta = math.cos(theta_rad) * Vm # 计算各个相的占空比 u = (2/3) * (0.5 - (1/2) * alpha - math.sqrt(3)/2 * beta) v = (2/3) * (0.5 + alpha) w = 1 - u - v return u, v, w ''' 上述代码中,我们首先定义了电压幅值和有效值。然后,我们将给定的角度转换为弧度,并通过三角函数计算电压矢量的系数alpha和beta。最后,通过简单的计算,我们得到了uvw三个相的占空比。这样,我们就实现了svpwm的代码。 请注意,以上代码仅为示例,实际svpwm的实现可能涉及更多的数学计算和控制逻辑。 ### 回答3: svpwm(Space Vector Pulse Width Modulation)是一种适用于电力电子设备的调制技术,可以通过几行代码实现。以下是一个简单的示例: 1. 首先,我们需要定义一些变量和参数来控制svpwm的频率和幅度。这些参数包括频率f、采样时间Ts、参考矢量幅度Va和变换矩阵T。 ``` f = 50 # 调制频率为50Hz Ts = 1 / (f * 1000) # 采样时间为调制周期的1/1000 Va = 0.8 # 参考矢量幅度为0.8 T = np.array([[np.sqrt(3)/2, 0.5, 0.5], [0, 1, -1], [-np.sqrt(3)/2, 0.5, 0.5]]) # 变换矩阵 ``` 2. 接下来,我们需要编写一个svpwm函数来生成输的pwm信号。 ``` def svpwm(theta): Va_alpha = Va * np.sin(theta) # 计算alpha轴参考矢量幅值 Va_beta = Va * np.cos(theta) # 计算beta轴参考矢量幅值 Va_abc = np.dot(T, [Va_alpha, Va_beta, 0]) # 转换到abc坐标系 Va_abc /= np.max(np.abs(Va_abc)) # 归一化幅值,使得最大值为1 pwm_u = Va_abc[0] / 2 + 0.5 # 计算u相pwm信号 pwm_v = Va_abc[1] / 2 + 0.5 # 计算v相pwm信号 pwm_w = Va_abc[2] / 2 + 0.5 # 计算w相pwm信号 return pwm_u, pwm_v, pwm_w ``` 3. 最后,我们可以在主程序中调用svpwm函数,并传入合适的角度参数来生成pwm信号。 ``` import numpy as np # 调用svpwm函数,传入角度参数 pwm_u, pwm_v, pwm_w = svpwm(np.pi/6) # 示例传入角度参数为30度 # 输pwm信号 print("u相pwm信号:", pwm_u) print("v相pwm信号:", pwm_v) print("w相pwm信号:", pwm_w) ``` 通过上述几行代码,我们就能够实现简单的svpwm,并生成相应的pwm信号。当然,具体实现方式可能因实际应用而异,这只是一个基本的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值