Python 基础知识:语法、数据类型和控制结构

news2024/10/7 14:29:55
推荐:使用 NSDT场景编辑器 快速搭建3D应用场景

如果开发和环境中已安装 Python,请启动 Python REPL 和代码。或者,如果您想跳过安装并立即开始编码,我建议您前往Google Colab并一起编码。

你好,Python!

在我们用Python编写经典的“Hello,world!”程序之前,这里有一些关于语言的信息。Python是一种解释型语言。这是什么意思?

在任何编程语言中,您编写的所有源代码都应翻译成机器语言。虽然像C和C++这样的编译语言在程序运行之前需要整个机器代码,但解释器会解析源代码并动态解释它。

创建一个 Python 脚本,键入以下代码并运行它:

print("Hello, World!")

为了打印出Hello, World!,我们使用了“print()”函数,这是Python中众多内置函数之一。

在这个超级简单的示例中,请注意“Hello, World!”是一个序列 - 一串字符。Python 字符串由一对单引号或双引号分隔。因此,要打印出任何消息字符串,您可以使用“print(”<message_string>“)”。

读取用户输入

现在让我们更进一步,使用 'input()' 函数读取用户的一些输入。应始终提示用户让他们知道应输入的内容

这是一个简单的程序,它将用户名作为输入并问候他们。

注释通过向用户提供其他上下文来帮助提高代码的可读性。Python 中的单行注释以 # 开头。

请注意,下面代码片段中的字符串前面有一个“f”。此类字符串称为格式化字符串或 f 字符串。若要替换 f 字符串中变量的值,请在一对大括号内指定变量的名称,如下所示:

# Get user input
user_name = input("Please enter your name: ")

# Greet the user
print(f"Hello, {user_name}! Nice to meet you!")

运行程序时,系统将首先提示您输入,然后打印出问候消息:

Please enter your name: Bala
Hello, Bala! Nice to meet you!

让我们继续学习 Python 中的变量和数据类型。

Python 中的变量和数据类型

在任何编程语言中,变量都像存储信息的容器。在我们到目前为止编写的代码中,我们已经创建了一个变量 'user_name'。当用户输入其名称(字符串)时,它将存储在“user_name”变量中。

Python 中的基本数据类型

让我们来看看 Python 中的基本数据类型:“int”、“float”、“str”和“bool”,使用相互构建的简单示例:

整数('int'):整数是没有小数点的整数。您可以创建整数并将它们分配给变量,如下所示:

age = 25
discount= 10

这些是将值赋给变量的赋值语句。在 C 等语言中,声明变量时必须指定数据类型,但 Python 是一种动态类型语言。它从值推断数据类型。因此,您可以重新分配一个变量来保存完全不同的数据类型的值:

number = 1
number = 'one'

您可以使用“type”函数检查Python中任何变量的数据类型:

number = 1
print(type(number))

“数字”是一个整数:

Output >>> <class 'int'>

我们现在为“数字”分配一个字符串值:

number = 'one'
print(type(number))
Output >>> <class 'str'>

浮点数(“float”):浮点数表示带有小数点的实。您可以创建“float”数据类型的变量,如下所示:

height = 5.8
pi = 3.14159

您可以对数值数据类型执行各种运算(加法、减法、下限除法、幂等)。以下是一些示例:

# Define numeric variables
x = 10
y = 5

# Addition
add_result = x + y
print("Addition:", add_result)  # Output: 15

# Subtraction
sub_result = x - y
print("Subtraction:", sub_result)  # Output: 5

# Multiplication
mul_result = x * y
print("Multiplication:", mul_result)  # Output: 50

# Division (floating-point result)
div_result = x / y
print("Division:", div_result)  # Output: 2.0

# Integer Division (floor division)
int_div_result = x // y
print("Integer Division:", int_div_result)  # Output: 2

# Modulo (remainder of division)
mod_result = x % y
print("Modulo:", mod_result)  # Output: 0

# Exponentiation
exp_result = x ** y
print("Exponentiation:", exp_result)  # Output: 100000

字符串('str'):字符串是字符序列,括在单引号或双引号中。

name = "Alice"
quote = 'Hello, world!'

布尔值(“bool”):布尔值表示“真”或“假”,表示条件的真值。

is_student = True
has_license = False

Python 在处理不同数据类型方面的灵活性使您可以有效地存储、执行各种操作和操作数据。

下面是一个示例,将我们迄今为止学到的所有数据类型放在一起:

# Using different data types together
age = 30
score = 89.5
name = "Bob"
is_student = True

# Checking if score is above passing threshold
passing_threshold = 60.0
is_passing = score >= passing_threshold

print(f"{name=}")
print(f"{age=}")
print(f"{is_student=}")
print(f"{score=}")
print(f"{is_passing=}")

这是输出:

Output >>>

name='Bob'
age=30
is_student=True
score=89.5
is_passing=True

超越基本数据类型

假设您正在管理课堂上有关学生的信息。创建一个集合(存储所有学生的信息)会比为每个学生重复定义变量更有帮助。

列表

列表是项的有序集合,括在一对方括号内。列表中的项都可以是相同或不同的数据类型。列表是可变的,这意味着您可以在创建后更改其内容。

在这里,“student_names”包含学生的姓名:

# List
student_names = ["Alice", "Bob", "Charlie", "David"]

元组

元组是类似于列表的有序集合,但它们是不可变的,这意味着您在创建后无法更改其内容。

假设您希望“student_scores”成为包含学生考试成绩的不可变集合。

# Tuple
student_scores = (85, 92, 78, 88)

字典

字典是键值对的集合。字典的键应该是唯一的,并且它们映射到相应的值。它们是可变的,允许您将信息与特定键相关联。

在这里,“student_info”包含有关每个学生的信息(姓名和分数)作为键值对:

student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

但是等等,有一种更优雅的方法可以在 Python 中创建字典。

我们即将学习一个新概念:字典理解。如果不是马上就清楚了,不要担心。您可以随时了解更多信息并在以后处理它。

但是理解是非常直观的理解。如果您希望“student_info”词典将学生姓名作为键,并将他们相应的考试成绩作为值,则可以像这样创建字典:

# Using a dictionary comprehension to create the student_info dictionary
student_info = {name: score for name, score in zip(student_names, student_scores)}

print(student_info)

请注意我们如何使用 'zip()' 函数同时遍历 'student_names' 列表和 'student_scores' 元组。

Output >>>

{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

在此示例中,字典理解直接将“student_names”列表中的每个学生姓名与“student_scores”元组中的相应考试分数配对,以创建“student_info”字典,其中姓名作为键,分数作为值。

现在您已经熟悉了原始数据类型和一些序列/可迭代对象,让我们继续讨论的下一部分:控制结构

Python 中的控制结构

运行 Python 脚本时,代码执行按顺序执行,顺序与代码在脚本中执行的顺序相同。

有时,您需要实现逻辑来根据某些条件控制执行流,或者循环通过可迭代对象来处理其中的项。

我们将了解 if-else 语句如何促进分支和条件执行。我们还将学习如何使用循环迭代序列,循环控制语句中断并继续。

如果语句

当仅当特定条件为真时才需要执行代码块时,可以使用“if”语句。如果条件的计算结果为 false,则不执行代码块。

Python 基础知识:语法、数据类型和控制结构


图片来源:作者

请考虑以下示例:

score = 75

if score >= 60:
    print("Congratulations! You passed the exam.")

在此示例中,仅当“score”大于或等于 60 时,才会执行“if”块中的代码。由于“分数”是 75,因此消息“恭喜!你通过了考试“,将打印出来。

Output >>> Congratulations! You passed the exam.

If-else 条件语句

“if-else”语句允许您在条件为真时执行一个代码块,如果条件为假,则执行另一个代码块。

Python 基础知识:语法、数据类型和控制结构


图片来源:作者

让我们以测试分数示例为基础:

score = 45

if score >= 60:
    print("Congratulations! You passed the exam.")
else:
    print("Sorry, you did not pass the exam.")

在这里,如果“分数”小于 60,则将执行“else”块中的代码:

Output >>> Sorry, you did not pass the exam.

If-elif-else Ladder

当您有多个条件要检查时,将使用“if-elif-else”语句。它允许您测试多个条件,并为遇到的第一个 true 条件执行相应的代码块。

如果 'if' 和所有 'elif' 语句中的条件计算结果为 false,则执行 'else' 块。

Python 基础知识:语法、数据类型和控制结构


图片来源:作者

score = 82

if score >= 90:
    print("Excellent! You got an A.")
elif score >= 80:
    print("Good job! You got a B.")
elif score >= 70:
    print("Not bad! You got a C.")
else:
    print("You need to improve. You got an F.")

在此示例中,程序根据多个条件检查“分数”。将执行第一个 true 条件块中的代码。由于“分数”是 82,我们得到:

Output >>> Good job! You got a B.

嵌套 If 语句

当您需要检查另一个条件中的多个条件时,使用嵌套的“if”语句。

name = "Alice"
score = 78

if name == "Alice":
    if score >= 80:
        print("Great job, Alice! You got an A.")
    else:
        print("Good effort, Alice! Keep it up.")
else:
    print("You're doing well, but this message is for Alice.")

在此示例中,有一个嵌套的“if”语句。首先,程序检查“名称”是否为“爱丽丝”。如果为 true,则检查“分数”。由于“分数”为 78,因此执行内部的“else”块,打印“努力好,爱丽丝!坚持下去。

Output >>> Good effort, Alice! Keep it up.

Python 提供了几个循环构造来迭代集合或执行重复性任务。

对于循环

在 Python 中,“for”循环提供了一个简洁的语法,让我们迭代现有的可迭代对象。我们可以像这样迭代“student_names”列表:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    print("Student:", name)

上面的代码输出:

Output >>>

Student: Alice
Student: Bob
Student: Charlie
Student: David

而循环

如果你想在条件为真的情况下执行一段代码,你可以使用“while”循环。

让我们使用相同的“student_names”列表:

# Using a while loop with an existing iterable

student_names = ["Alice", "Bob", "Charlie", "David"]
index = 0

while index < len(student_names):
    print("Student:", student_names[index])
    index += 1

在此示例中,我们有一个包含学生姓名的列表“student_names”。我们使用“while”循环通过跟踪“index”变量来迭代列表。

只要“索引”小于列表的长度,循环就会继续。在循环中,我们打印每个学生的姓名并递增“索引”以移动到下一个学生。请注意使用“len()”函数来获取列表的长度。

这实现了与使用“for”循环遍历列表相同的结果:

Output >>>

Student: Alice
Student: Bob
Student: Charlie
Student: David

让我们使用一个 'while' 循环,从列表中弹出元素,直到列表为空:

student_names = ["Alice", "Bob", "Charlie", "David"]

while student_names:
    current_student = student_names.pop()
    print("Current Student:", current_student)

print("All students have been processed.")

列表方法“pop”删除并返回列表中存在的最后一个元素。

在此示例中,只要“student_names”列表中存在元素,“while”循环就会继续。在循环中,“pop()”方法用于删除并返回列表中的最后一个元素,并打印当前学生的姓名。

循环将继续,直到所有学生都已处理完毕,并在循环外打印最后一条消息。

Output >>>

Current Student: David
Current Student: Charlie
Current Student: Bob
Current Student: Alice
All students have been processed.

“for”循环通常更简洁,更易于阅读,用于迭代现有的可迭代对象(如列表)。但是,当循环条件更复杂时,“while”循环可以提供更多的控制。

循环控制语句

“break”过早退出循环,“continue”跳过当前迭代的其余部分并移动到下一个迭代。

下面是一个示例:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    if name == "Charlie":
        break
    print(name)

当“名字”是查理时,控件脱离循环,给我们输出:

Output >>>
Alice
Bob

模拟执行时循环行为

在Python中,没有像其他一些编程语言那样的内置“do-while”循环。但是,您可以使用带有“break”语句的“while”循环来实现相同的行为。以下是在 Python 中模拟“do-while”循环的方法:

while True:
    user_input = input("Enter 'exit' to stop: ")
    if user_input == 'exit':
        break

在此示例中,循环将无限期地继续运行,直到用户进入“exit”。循环至少运行一次,因为条件最初设置为“True”,然后在循环内检查用户的输入。如果用户输入“exit”,则执行“break”语句,退出循环。

下面是一个示例输出:

Output >>>
Enter 'exit' to stop: hi
Enter 'exit' to stop: hello
Enter 'exit' to stop: bye
Enter 'exit' to stop: try harder!
Enter 'exit' to stop: exit

请注意,此方法类似于其他语言中的“do-while”循环,其中循环体保证在检查条件之前至少执行一次。

总结和后续步骤

我希望您能够毫无困难地编写本教程的代码。现在您已经了解了 Python 的基础知识,是时候开始编写一些超级简单的项目了,应用您学到的所有概念。

原文链接:Python 基础知识:语法、数据类型和控制结构 (mvrlink.com)

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

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

相关文章

【算法日志】单调栈: 单调栈简介及其应用

代码随想录刷题60Day 目录 单调栈简介 单调栈的应用 下次更高温 下一个更大元素1 下一个更大元素2 接雨水 柱状图中最大矩形 单调栈简介 单调栈&#xff08;Monotonic Stack&#xff09;是一种特殊的栈数据结构&#xff0c;它满足元素的单调性&#xff0c;这种单调性需…

vue3使用el-form实现登录、注册功能,且进行表单验证(Element Plus中的el-form)

简介&#xff1a;Element Plus 中的 el-form 是一个表单组件&#xff0c;用于快速构建表单并进行数据校验。它提供了丰富的表单元素和验证规则&#xff0c;使表单开发变得更加简单和高效。可以搭配el-dialog实现当前页面的登录、注册页 &#xff0c;这两天在vue3中用到了表单登…

微信小程序 按钮颜色

<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…

全局光照RSM

Reflective Shadow Maps&#xff08;RSM&#xff09; 一切被直接光照照到的物体&#xff0c;会作为次级光源。 问题1&#xff1a;哪些面片被直接照亮 使用ShadowMap就可以知道哪些面片被直接照亮 问题2&#xff1a;各个面片对P点的贡献分别是多少。 对渲染方程代入如上计算…

CRM客户管理系统能在线使用吗?

经常有朋友私信小编&#xff0c;mac系统/windows系统可以下载使用吗&#xff1f;在哪里下载&#xff1f;其实&#xff0c;Zoho CRM在线即可使用&#xff0c;完全不用下载客户端&#xff01;下面我们就说说&#xff0c;CRM管理系统如何在线用。 Zoho CRM是一款帮助企业进行客户…

恒运资本:什么是五日线?

在股票买卖中&#xff0c;五日线是一种常见的技术剖析指标&#xff0c;用于判别股市的趋势和价格改变。五日线也被称为移动平均线&#xff0c;它是以最近五个买卖日的收盘价为基础核算出的平均值。五日线能够协助出资者识别短期商场意向&#xff0c;及时调整出资战略&#xff0…

Mybatis 框架 ( 四 ) QueryWrapper

4.5.Wrapper条件构造器 Wrapper &#xff1a; 条件构造抽象类&#xff0c;最顶端父类 AbstractWrapper &#xff1a; 用于查询条件封装&#xff0c;生成 sql 的 where 条件 QueryWrapper &#xff1a; Entity 对象封装操作类&#xff0c;不是用lambda语法 UpdateWrapper &am…

【前端】禁止别人调试自己的前端页面代码

无限debugger 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点&#xff0c;因为 debugger 在控制台被打开的时候就会执行由于程序被 debugger 阻止&#xff0c;所以无法进行断点调试&#xff0c;所以网页的请求也是看不到的代码如下&#xff1a; /** * 基础禁止…

参照错误原因排查

报错如下&#xff0c;弹框参照框不显示&#xff1a; 首先定位到错误代码行&#xff0c;排查后发现调用方式、参数均没问题 再到参照引入源头&#xff0c;结合network检测资源加载情况&#xff0c;发现静态资源js文件均正常获取 可以基本判断是参照组件那边出现问题&#xff0c…

算法通关村第十八关——回溯是怎么回事(青铜)

算法通关村第十八关——回溯是怎么回事&#xff08;青铜&#xff09; 前言1. 从N叉树说起1.1 N叉树的定义和特点1.2 N叉树的遍历方式1.3 N叉树在回溯算法中的应用 2. 为什么有的问题暴力搜索也不行2.1 暴力搜索的局限性 3. 回溯递归局部枚举放下前任3.1 回溯算法的基本思想和原…

运维Shell脚本牛刀小试(九): 重定向操作符“>“及双重定向“>>“

运维Shell脚本小试牛刀(一) 运维Shell脚本小试牛刀(二) 运维Shell脚本小试牛刀(三)::$(cd $(dirname $0)&#xff1b; pwd)命令详解 运维Shell脚本小试牛刀(四): 多层嵌套if...elif...elif....else fi_蜗牛杨哥的博客-CSDN博客 Cenos7安装小火车程序动画 运维Shell脚本小试…

c高级day4(9.11)shell脚本(case ....in语句,循环语句,select ...in和case...In结合,辅助控制关键字,函数)

1.实现一个对数组就和的函数&#xff0c;数组通过实参传递给函数 2.写一个函数&#xff0c;输出当前用户的uid和gid&#xff0c;并使用变量接收结果 #!/bin/bash read -a arr sum0 function add() { …

s2019nh62分数减法

代码&#xff1a; #include<bits/stdc.h> using namespace std; int m1,z1,m2,z2,zd,zx,s1,s2,f1,f2,c,da; int main() {cin>>z1>>m1; //分子1和分母1cin>>z2>>m2; //分子2和分母2zd__gcd(m1,m2); //求两个分母的最大公因数来求最小公倍数z…

数据分析工具有哪些,哪个好学?

Tableau、帆软BI、思迈特BI、SpeedBI数据分析云……这些都是比较常见的BI数据分析工具。从学习成本、操作难度以及数据可视化分析效果来看&#xff0c;SpeedBI数据分析云都表现地可圈可点。 1、不需下载安装、学习成本低 SpeedBI数据分析云是一款SaaS BI数据分析工具&#xf…

IO和进程day05(进程与线程)

今日任务 1.代码 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <sys/wait.h> #include <pthread.h>…

pytorch代码实现之CoordConv卷积

CoordConv卷积 在深度学习领域&#xff0c;几乎没有什么想法能像卷积那样产生如此大的影响。对于任何涉及像素或空间表示的问题&#xff0c;普遍的直觉认为卷积神经网络可能是合适的。在本文中&#xff0c;我们通过看似平凡的坐标变换问题展示了一个惊人的反例&#xff0c;该问…

如何使用bat脚本启动指定目录下的jar包

士别三日&#xff0c;当刮目相待。——《三国志》 为了将一个java程序封装成一个简单易用的小工具&#xff0c;使用bat脚本启动jar包。 在txt文档中&#xff0c;键入&#xff1a; echo off java -jar %~dp0core\demo.jar 注意&#xff1a; 1、其中“core”是文件夹的名称&am…

与读者互动,扩大影响:提升公众号文章阅读量的关键

如何提升公众号文章阅读量 公众号已成为许多个人和企业推广与传播的重要平台。然而&#xff0c;仅仅拥有一个公众号并发布文章并不足以吸引大量读者和提高阅读量。在当今信息爆炸的时代&#xff0c;如何让你的公众号文章脱颖而出并吸引更多读者的关注是一个关键问题。本文将为…

气象观测站:实时监测、应用广泛

对于许多人来说&#xff0c;气象观测站可能只是一种能够预测天气的设备&#xff0c;但实际上&#xff0c;它所涉及的原理和优势却远不止于此。 二、气象观测站的优势 全面覆盖 气象观测站能够全面覆盖气象要素的各个方面&#xff0c;从温度、湿度、气压到风速、风向等。这些…

日志是你的朋友:为什么每个开发者都应该写日志

大家好&#xff0c;我是小米&#xff0c;一个热衷于技术分享的程序员。今天我想和大家聊一聊一个在编写代码时常常被忽视&#xff0c;却极为重要的话题——为什么要写有意义的日志。 在日常的编程工作中&#xff0c;我们经常听到“日志”这个词&#xff0c;但是有些人可能并不…