写给Java/Android开发者的Python入门教程

news2024/11/15 8:03:10

1. 前言

对于Java/Android开发工程师来说,已经掌握了Java语言,这时再学其他语言(C/C++除外),都是比较容易的,可能花上几个小时就能入门了。
作为一个Android开发工程师,今天一时兴起,学了下Python,在此记录下,同时也希望能帮助更多的同学。

2. 配置环境

2.1 安装Python

首先,我们需要安装Python
Python下载地址 : https://www.python.org/downloads/

在这里插入图片描述

当然,官网下载可能会比较慢,所以可以从我提供的网盘里下载 : python-3.12.0-amd64.exe

3.2 安装pycharm

编写Python可以用pycharm这个IDE,和Android StudioIntelliJ IDEA一样,都是JetBrains出品的,快捷键啥的都一样,对于Java/Android工程师来说几乎没有适应成倍。这里入门的话使用社区版(免费版)就可以了。

pycharm下载地址 : https://www.jetbrains.com/zh-cn/pycharm/

在这里插入图片描述

同样,官网下载可能会比较慢,可以从我提供的网盘里下载 pycharm-community-2023.2.1.exe

3. Python基础

3.1 定义变量

和java不同的是,Python是一种动态类型语言,这意味着不需要预先声明变量的类型。Python会根据赋予给变量的值自动确定变量的类型。

name = "Heiko"

3.2 数据类型

python的主要数据类型有如下这些

  • 整数 : int
  • 浮点型 : float
  • 布尔类型 : bool
    • Ture:1
    • False:0
  • 字符串 : str,引号引起来的就是字符串
  • 列表 : list[1,2,3,4]
  • 字典 : dict{'name':'小明',age:20}

type()函数可以获取变量的数据类型

3.3 类型转换

  • int() : 转成int类型
  • float() : 转成float类型
  • str() : 转成字符串类型
value = "10"
intValue = int(value)
floatValue = float(value)

3.4 打印日志

print('hello world')

3.5 输入

用键盘输入内容,回车后,input()会获取到输入的内容

result = input('请输入名字')
print(result)

3.6 格式化内容

%为格式化占位符

  • %d : 填充整形数据digit
  • %f : 填充浮点型数据float
  • %s : 占位,填充 字符串数据 string (其实可以填充任意类型的数据)
name = "Heiko"
age = 20
height = 1.90
print('我的名字是%s,年龄是%d,身高是%.2f' %(name, age, height))

3.7 f 字符串格式化

name = "Heiko"
age = 20
height = 1.90
print(f'我的名字是{name},年龄是{age},身高是{height}')

3.8 算数运算符

运算符描述
+
-
*
/
//求商
%求余数
**指数运算

3.9 比较运算符

  • > 大于
  • < 小于
  • >= 大于等于
  • <= 小于等于
  • == 等于
  • != 不等于

3.10 逻辑运算符

  • and 逻辑与
  • or 逻辑或
  • not 逻辑非,取反

3.11 if-else

price = 5.6
if price > 10:
    print("太贵了")
else:
    print("还能接受")

输出结果

还能接受

3.12 while循环

i = 0
while i < 5:
    print(f"i:{i}")
    i += 1

输出结果

i:0
i:1
i:2
i:3
i:4

3.13 for循环

for i in 容器
	重复执行的代码

例如

my_text = "hello world!"
for i in my_text:
	print(i)

打印结果

h
e
l
l
o
 
w
o
r
l
d
!

4. 容器

4.1 字符串

字符串是容器,因为字符串中可以包含多个字符

my_text = "hello world!"
print(my_text[3:7])  # 从索引3开始,到索引7
find = my_text.find("world")
print(f"是否找到:{find}") # 如果没找到返回-1,如果找到返回具体索引
re_text = my_text.replace("h","g")  # 替换
print(re_text)
split_text = my_text.split(" ")  # 以空格为分隔符进行分割
print(split_text)
list1 = ['good','good','study']
join_text = " ".join(list1)  # 使用空格连起来 good good study
print(join_text)

执行结果

lo w
是否找到:6
gello world!
['hello', 'world!']
good good study

4.2 列表

list2 = list("hello")  # 转换字符串会将字符串中的每个字符作为一个数据存储到列表中
list3 = []
list4 = [1, "Heiko", 190, True]
# 获取第一个数据
print(list2[0])
# 获取最后一个数据
print(list2[-1])
# 第一第二个数据
print(list2[0:2])
# 获取列表长度
print(len(list2))
# 查找下标
index = list2.index("e")
print(f"e的下标:{index}")
# 判断是否存在
exist = "e" in list2
print(f"e是否在list2中存在:{exist}")
# 统计出现的次数
e_count = list2.count("e")
print(f"e出现的次数:{e_count}")
# 添加数据
list3.append("w")
print(list3)
list3.extend(list4)
print(list3)
# 修改操作
list3[0] = "Q"
print(list3)
# 删除操作
deleteItem = list3.pop(0)
print(f"删除了:{deleteItem} list3:{list3}")
deleteItem = list3.remove(190)
print(f"list3:{list3}")

执行结果

h
o
['h', 'e']
5
e的下标:1
e是否在list2中存在:True
e出现的次数:1
['w']
['w', 1, 'Heiko', 190, True]
['Q', 1, 'Heiko', 190, True]
删除了:Q list3:[1, 'Heiko', 190, True]
list3:[1, 'Heiko', True]

4.3 元组

元组和列表非常相似,元组中可以存放任意类型的数据。
区别在于元组中的数据内容不能改变,列表中的可以改变,元组使用(),列表使用[]
应用:在函数的传参或返回值中使用,保证数据不会被修改
由于元组中的数据不能修改,所以只有查看的方法 index、count、in、len()

# 定义元组
tuple1 = tuple()
tuple2 = tuple([1, 2, 3])
print(tuple2)
tuple3 = tuple("hello")
print(tuple3)
tuple4 = (1, "Heiko", 190, False)
print(tuple4)
# 定义只有一个数据的元组时,数据后边必须有一个逗号
tuple5 = (1,)
print(tuple5)

执行结果

(1, 2, 3)
('h', 'e', 'l', 'l', 'o')
(1, 'Heiko', 190, False)
(1,)

4.4 字典

# 字典 : 由键(key)值(value)对组成
# 定义字典
dict1 = dict()
dict2 = {}
dict3 = {"name": "Heiko", "age": 20, "like": ["写程序", "摄影"]}
print(dict3)
# 修改
dict3["age"] = 25
print(dict3)

# 遍历
for value in dict3:
    print(value)

# 删除
dict3.pop("age")
print(dict3)
# 清空
dict3.clear()
print(dict3)

执行结果

{'name': 'Heiko', 'age': 20, 'like': ['写程序', '摄影']}
{'name': 'Heiko', 'age': 25, 'like': ['写程序', '摄影']}
name
age
like
{'name': 'Heiko', 'like': ['写程序', '摄影']}
{}

5. 函数

5.1 定义函数

Python中,可以使用def关键字来定义一个函数

def 函数名(参数列表):  
    函数体

例如

def func_test():
    print("hahaha")
    print("func test")

然后在main函数中进行调用即可

if __name__ == '__main__':

5.2 函数返回多个值

函数返回多个值,其实就是使用元祖返回

def func_test1():
    tuple1 = ("Heiko", 20)
    return tuple1

可以进行简化

def func_test1():
    return "Heiko", 20

进行调用,返回值

name, age = func_test1()
    print(f"名字:{name} 年龄:{age}")

执行结果

名字:Heiko 年龄:20

6. 面向对象

6.1 定义对象

这里定义了一个Student对象,然后声明了eat()、sleep()、year()这几个方法,__init__()方法是初始化方法,__str__()方法相当于Java中的toString()方法

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return f"姓名:{self.name},年龄:{self.age} 岁"

    def eat(self):
        print(f"{self.name} 要吃饭")

    def sleep(self):
        print(f"{self.name} 要睡觉")

    def year(self):
        self.age += 1

进行调用

student1 = Student("Heiko", 18)
print(student1)
student1.eat()
student1.sleep()
student1.year()

执行结果

姓名:Heiko,年龄:18 岁
Heiko 要吃饭
Heiko 要睡觉

6.2 类继承

Python中的类继承是写在()里面的,即 class 子类(父类):

class Amimal :
    def eat(self):
        print("要吃东西")

class Dog(Amimal):
    def bark(self):
        print("汪汪汪")

进行调用

dog = Dog()
dog.bark()
dog.eat()

执行结果

汪汪汪
要吃东西

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1122210.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

初识进程以及父子进程

一 进程概念 什么是进程呢&#xff1f;许多资料都说一个已经加载到内存的程序就叫进程&#xff0c;意思是只要代码到了内存就能跑起来了吗?接下来我就谈谈对进程概念的理解。 1 如何管理进程 我们可能运行多个进程&#xff0c;这些进程有些结束&#xff0c;有些要退出&#x…

yolov5自己的数据集制作

文章目录 一、制作数据集1、创建文件夹结构如下2、将之前的图片以及标注数据放入mydata文件夹3、新建一个mydata.yaml文件 二、基于数据集训练模型1、基于数据集训练模型2、开始根据制作好的数据集训练模型3、模型训练结束 三、部署模型 文章参考博主&#xff1a;风吹落叶花飘荡…

Power BI 傻瓜入门 6. 从动态数据源获取数据

本章内容将介绍 发现如何从关系数据库和非关系数据库中提取数据学习如何使用Power BI使用在线和实时数据源跨多个数据源应用分析服务使用Power BI通过静态和动态数据解决纠正措施 数据有时可能有点复杂。诚然&#xff0c;上传一个包含几个电子表格的文件&#xff0c;或者一个…

计算机中整数的补码表示及二进制数轮

为了同学们能理好的理解数在计算机内的表示&#xff0c;我们可以把计算机中的整数看成N位进制数的数轮&#xff0c;N一般为2的幂&#xff0c;如下&#xff1a; 我们来举个例子&#xff1a;如果用4位二进制来表示整数&#xff0c;则可以表示的整数范围为-8&#xff08;即&#x…

详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题

本文中将详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题&#xff0c;结合给出的带约束的最优化问题示例&#xff0c;给出相应的完整的C程序&#xff0c;并给出详细的解释和注释&#xff0c;以及编译规则等 一、Ipopt库的安装和测试 本部分内容在之前的文章《Ubuntu2…

STM32-LTC6804方案成熟BMS方案

方案下载链接&#xff01;&#xff01;https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247549092&idx1&snc73855c4e3d5afddd8608d8528864f95&chksmfcfb1373cb8c9a65a4bd1f545a1a587af882f209e7ccbb8944f4d2514d241ca1d7fcc4615e10&token539106225&a…

【字符函数】

✨博客主页&#xff1a;小钱编程成长记 &#x1f388;博客专栏&#xff1a;进阶C语言 &#x1f388;相关博文&#xff1a;字符串函数&#xff08;一&#xff09;、字符串函数&#xff08;二&#xff09; 字符函数 字符函数1.字符分类函数1.1 iscntrl - 判断是否是控制字符1.2 i…

【GWO-KELM预测】基于灰狼算法优化核极限学习机回归预测研究(matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【Java基础面试四十六】、 List<? super T>和List<? extends T>有什么区别?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;问题 参考答案&#x…

蓝桥每日一题(day 4: 蓝桥592.门牌制作)--模拟--easy

#include <iostream> using namespace std; int main() {int res 0;for(int i 1; i < 2021; i ){int b i;while(b){if (b % 10 2) res ;b / 10;}}cout << res; return 0; }

FFmpeg和rtsp服务器搭建视频直播流服务

下面使用的是ubuntu的&#xff0c;window系统可以参考&#xff1a; 通过rtsp-simple-server和ffmpeg实现录屏并发布视频直播_rtsp simple server_病毒宇宇的博客-CSDN博客 一、安装rtsp-simple-server &#xff08;1&#xff09;下载rtsp-simple-server 下载地址&#xff1a;R…

搜索问答技术学习:基于知识图谱+基于搜索和机器阅读理解(MRC)

目录 一、问答系统应用分析 二、搜索问答技术与系统 &#xff08;一&#xff09;需求和信息分析 问答需求类型 多样的数据源 文本组织形态 &#xff08;二&#xff09;主要问答技术介绍 发展和成熟度分析 重点问答技术基础&#xff1a;KBQA和DeepQA KBQA&#xff08;…

Python高级技巧

十三、Python高级技巧 1. 闭包 解决全局变量问题&#xff1a; 代码在命名空间上&#xff08;变量定义&#xff09;不够干净、整洁全局变量又被修改的风险 定义&#xff1a; ​ 在函数嵌套的前提下&#xff0c;内部函数使用了外部函数的变量&#xff0c;并且外部函数返回了内部…

什么是内存泄漏,为什么threadlocal会造成内存泄漏?

内存泄漏&#xff1a;指的是应用程序中存在无用的对象或者资源没有被垃圾回收机制回收&#xff0c;从而导致内存占用不断增加&#xff0c;最终导致应用程序的崩溃。 jvm里对象的引用按照从强到弱&#xff0c;分为四个强&#xff0c;软&#xff0c;弱&#xff0c;虚。强引用不会…

YOLOv8改进实战 | 更换主干网络Backbone之PoolFormer篇

目录 一、PoolFormer二、代码实现2.1 添加PoolFormer网络2.2 注册PoolFormer网络2.3 配置yaml文件yolov8-PoolFormer.yaml2.3 模型验证2.4 模型训练三、总结一、PoolFormer 2022 CVPR 论文链接:MetaFormer Is Actually What You Need for Vision Pytorch code:poolformer

微信支付API

微信支付API 一、概念二、主要实现步骤 一、概念 主要经过小程序内调用登录接口、商户server调用支付统一下单、商户server调用再次签名&#xff0c;商户server接受支付通知&#xff0c;商户server查询支付结果。 二、主要实现步骤 1、小程序调用wx.login方法&#xff0c;获…

AD9371 官方例程之 tx_jesd 与 xcvr接口映射

文章目录 前言一、AD9371 ----> FMC_DP二、FMC_DP ----> FPGA_TX/RX三、rx_data_x and tx_data_x must be connected to the same channel四、ADRV9009 前言 axi_ad9371_tx_jesd --> util_ad9371_xcvr接口映射讲解 一、AD9371 ----> FMC_DP AD9371内部原理图 …

oracle实现搜索不区分大小写

<if test"code ! null and code ! ">and upper(code) like upper(%${code}%) </if>关键字upper

简单了解一下:NodeJS的fs文件系统

NodeJS提供了fs模块来本地文件。大致有这些内容&#xff1a; 文件读写 在操作文件之前&#xff0c;我们需要检查一下这个文件是否存在&#xff0c;fs模块提供了access方法&#xff0c;语法如下&#xff1a;fs.access(path,mode,callback)。 path&#xff1a;就是文件路径&…

最长上升子序列(二分)代码模板

用二分的思想求最长上升子序列的思想就是保持单调性&#xff0c;用一个q[]数组来作为一个单调数组。 每次将a[i]放进q数组中&#xff0c;但是要保持单调性&#xff0c;q数组的长度就是答案。 q[]数组中存的是所以以下标为长度的最长子序列的结尾的最小值。 理解q[]数组的意义…