上学期看那么久的java,因为涉及到一些新的东西现在需要再来学一下python,发现哇靠,原来语法可以这么简单,难怪那么多人喜欢python了,我是跟着github上一个收藏量很大的python教学文档仓库来学的链接在这: Python-100-Days。
实在的说,编程语言虽然各不相同,但是差别再大基础的东西还是那些,所以简单的例如变量,还有运算符,分支,循环这些逻辑就不过多赘述了,我只记录自己觉得重要或则容易忘记的部分,我现在这里先展示一下为什么说Python简洁,就用那个广为人知的程序打印helloworld来演示吧
从上面就可以很轻松的明白论语法的简洁,Python是可以轻松胜利Java的,但是规范性上来说,Java还是更胜一筹,因为正式因为Java严格的语法要求,让100个程序员去用Java实现,java代码最后的实现肯定是都很相近的,Python就做不到,所以我对二者并没有那种喜欢或者讨厌的感觉,各有优缺点。
基本运算符那些加减乘除赋值都是老生常谈,记录一个我印象深刻的
赋值运算符构成的表达式本身不产生值所以print((a=10))输出的话会报错,海象运算符也是将运算符右侧的值赋值给左边的变量,与赋值运算符不同的是,运算符右侧的值也是整个表达式的值,看看下面的代码就明白了:
在java中输出一般只出现在教学和练习还有纠错阶段,后续需要日志输出展示数据会用专配的日志输出依赖来解决,比如slf4j,java输出的方式一般就是变量名输出,遇到在需要结合文字内容就使用模版字符串来解决。而Python的格式化输出我觉得更像是C语言形式如下:
我更喜换第二种格式化输出方式如下:
更加便捷,看起来也很好懂
java里还要引入一个扫描器对象才可以进行控制台的输入,Python里使用input()函数,括号里面写信息,需要注意的是input函数默认输入的是字符串,如果要指定输入的类型使用(float..int..bool)进行强制转化转换为特定的类型
python中的列表可以装不同类型的数据,就像仓库一样,可以存放不同的数据:
但是输出有所不同,在Java中列表数组的输出往往需要使用循环,但是Python中输出可以使用切片运算符:
第一个数字代表起始start位置,第二个代表end位置,第三个代表下个访问列表元素下表的增量,如果起始位置是0,终止位置是列表的元素个数,增量是1,这种情况可以写成下面的格式
Python中是可以使用+运算符对列表实现拼接的操作,还可以使用*来实现列表元素的重复操作,使用in还有not可以判断一个运算符在不在列表中返回布尔值,还有一个需要注意的地方就是下标,数组的下标往往都是从0开始的,这也是为什么说程序员喜欢从零开始数数原因,列表下标可以是负数,-1就是正数第一个元素,-n(n代表数组长度)就是列表中的第一个数,切片不光可以输出数据,还可以进行修改,具体实现步骤可以看下面的代码进行了解:
关于列表的元素的遍历就不多说了,除了常见的for循环根据列表的元素数目来遍历以外可以直接让列表元素作为循环变量:
其他方法,调用方式:假设列表名为arrs还有一个名字叫bar的方法,那么使用就是:arrs.bar()这样的形式。
append方法添加到列表尾部insert方法可以指定插入元素位置remove删除元素,如果指定删除的元素不存在时会报错pop默认删除列表最后一个元素,也可以指定删除元素的位置,当然如果指定元素超出列表范围,也会报错clear方法删除列表中所有的元素count统计元素出现次数index查找元素的出现位置sort列表元素小到大排序reverse列表元素反转在 Python 中,列表还可以通过一种特殊的字面量语法来创建,这种语法叫做生成式。下面,我们通过例子来说明使用列表生成式创建列表到底有什么好处。
场景一:创建一个取值范围在1到99且能被3或者5整除的数字构成的列表。
items = [] for i in range(1, 100):
print(items) 使用列表生成式做同样的事情,代码如下所示。
items = [i for i in range(1, 100) if i % 3 0 or i % 5 0] print(items) 场景二:有一个整数列表nums1,创建一个新的列表nums2,nums2中的元素是nums1中对应元素的平方。
nums1 = [35, 12, 97, 64, 55] nums2 = [] for num in nums1:
print(nums2) 使用列表生成式做同样的事情,代码如下所示。
nums1 = [35, 12, 97, 64, 55] nums2 = [num ** 2 for num in nums1] print(nums2) 场景三: 有一个整数列表nums1,创建一个新的列表nums2,将nums1中大于50的元素放到nums2中。
nums1 = [35, 12, 97, 64, 55] nums2 = [] for num in nums1:
print(nums2) 使用列表生成式做同样的事情,代码如下所示。
nums1 = [35, 12, 97, 64, 55] nums2 = [num for num in nums1 if num > 50] print(nums2) 使用列表生成式创建列表不仅代码简单优雅,而且性能上也优于使用for-in循环和append方法向空列表中追加元素的方式。为什么说生成式有更好的性能呢,那是因为 Python 解释器的字节码指令中有专门针对生成式的指令(LISTAPPEND指令);而for循环是通过方法调用(LOADMETHOD和CALL_METHOD指令)的方式为列表添加元素,方法调用本身就是一个相对比较耗时的操作。对这一点不理解也没有关系,记住“强烈建议用生成式语法来创建列表”这个结论就可以了。
end(未完待续)...
print('hello,world');
pubulic class HelloWorld {
public static void main(String[] arge) {
System.out.println("Hello,World");
}
}
# 海象运算符
print((a := 10)) # 10
print(a) # 10
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print('%.1f华氏度 = %.1f摄氏度' % (f, c))
f = float(input('请输入华氏温度: '))
c = (f - 32) / 1.8
print(f'{f:.1f}华氏度 = {c:.1f}摄氏度')
items1 = [35, 12, 99, 68, 55, 35, 87]
items2 = ['Python', 'Java', 'Go', 'Kotlin']
items3 = [100, 12.3, 'Python', True]
print(items1) # [35, 12, 99, 68, 55, 35, 87]
print(items2) # ['Python', 'Java', 'Go', 'Kotlin']
print(items3) # [100, 12.3, 'Python', True]
print(items8[1:3:1]) # ['strawberry', 'durian']
print(items8[0:3:1]) # ['apple', 'strawberry', 'durian']
print(items8[0:5:2]) # ['apple', 'durian', 'watermelon']
print(items8[-4:-2:1]) # ['strawberry', 'durian']
print(items8[-2:-6:-1]) # ['peach', 'durian', 'strawberry', 'apple']
print(items8[1:3]) # ['strawberry', 'durian']
print(items8[:3:1]) # ['apple', 'strawberry', 'durian']
print(items8[::2]) # ['apple', 'durian', 'watermelon']
print(items8[-4:-2]) # ['strawberry', 'durian']
print(items8[-2::-1]) # ['peach', 'durian', 'strawberry', 'apple']
#列表拼接
items5 = [35, 12, 99, 45, 66]
items6 = [45, 58, 29]
items7 = ['Python', 'Java', 'JavaScript']
print(items5 + items6) # [35, 12, 99, 45, 66, 45, 58, 29]
print(items6 + items7) # [45, 58, 29, 'Python', 'Java', 'JavaScript']
items5 += items6
print(items5) # [35, 12, 99, 45, 66, 45, 58, 29]
#重复列表元素
print(items6 * 3) # [45, 58, 29, 45, 58, 29, 45, 58, 29]
print(items7 * 2) # ['Python', 'Java', 'JavaScript', 'Python', 'Java', 'JavaScript']
#值存在判断
print(29 in items6) # True
print(99 in items6) # False
print('C++' not in items7) # True
print('Python' not in items7) # False
languages = ['Python', 'Java', 'C++', 'Kotlin']
for language in languages:
print(language)
if i % 3 == 0 or i % 5 == 0:
items.append(i)nums2.append(num ** 2)if num > 50:
nums2.append(num)