基础语法
前言
本文基于pycharm编译器,也可以使用Anaconda 里的编译器,将讲解一些python的一些基础语法知识,是对上篇文章的补充,可以和我写的python数据分析——Python语言基础(数据结构基础)结合起来看,有些知识点可能在这篇文章写的不是很全面。
顺序语句
默认情况下,Python 的代码执行顺序是按照从上到下的顺序,依次执行的.
print("1") print("2") print("3")
执行结果一定为 “123”,而不会出现 “321” 或者 “132” 等. 这种按照顺序执行的代码,我们称为顺序语句.
这个顺序是很关键的.编程是一件明确无歧义的事情.安排好任务的顺序计算机才能够正确的进行执行.
就好像人生的顺序,是上学,工作,结婚,生子.一旦这里的顺序乱了,就很麻烦.
条件语句
什么是条件语句
条件语句能够表达 “如果 … 否则…” 这样的语义. 这构成了计算机中基础的逻辑判定条件语句也叫做分支语句, 表示了接下来的逻辑可能有几种走向.
在 Python 编程语言中,条件语句是一种语法结构,用于基于逻辑条件决定程序流程。
常见的条件语句包括 if、elif 和 else 语句。这些语句根据布尔值的结果来执行不同的代码块。如果布尔值为真,则执行 if 语句下的代码块;如果为假,则执行 else 语句下的代码块。 elif 语句可用于添加额外的条件,以便在满足特定条件时执行其他代码块。
例如,以下是一个简单的 if 语句,用于检查一个数字是否大于等于 10;
x = 5 if x >= 10: print("x is greater than or equal to 10") else: print("x is less than 10")
在这个例子中,由于 x
的值为 5,因此会执行 else
语句下的代码块,输出 "x is less than 10"
。
语法格式
Python 中使用 if else 关键字表示条件语句.
(1) if
if expression: do_something1 do_something2 next_something
如果 expression 值为 True, 则执行 do_something1, do_something2, next_something
如果 expression 值为 False, 则只执行 next_something, 不执行 do_something1, do_something2
(2) if - else
if expression: do_something1 else: do_something2
如果 expression 值为 True, 则执行 do_something1
如果 expression 值为 False, 则执行 do_something2
(3) if - elif - else
if expression1: do_something1 elif expression2: do_something2 else: do_something3
如果 expression1 值为 True, 则执行 do_something1
如果 expression1 值为 False, expression2 值为 True,则执行 do_something2
如果 expression1 值为 False, 并且 expression2 为 False 则执行 do_something3
注意: Python中的条件语句写法, 和很多编程语言不太一样.
- if后面的条件表达式,没有(),使用:作为结尾.
- if / else 命中条件后要执行的 “语句块”,使用 缩进(通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
- 对于多条件分支, 不是写作 else if, 而是 elif (合体了).
示例:输入 1 表示愿意认真学习,输入 2 表示躺平摆烂.
# 让用户输入一个数字,如果输入1 表示愿意认真学习,输入2 表示想躺平摆烂. choice = input("输入 1 表示愿意认真学习,输入 2 表示躺平摆烂: ") # 注意这里要比较的是 字符串 1 ,不是 整数 1 if choice == '1': print('你能够找到好工作') elif choice == '2': print("你可能毕业就失业了") else: # 除了 1 和 2 其他的情况都算非法情况 print("您的输入有误!")
缩进和代码块
代码块 指的是一组放在一起执行的代码.
在 Python 中使用缩进表示代码块. 不同级别的缩进,程序的执行效果是不同的.
代码1
a = input("请输入一个整数:") if a == "1": print ("hello") print("world")
代码2
a = input("请输入一个整数:") if a == "1": print("hello") print ("world")
注意上述代码的区别.
在代码1 中,print (“world”)有一级缩进, 这个语句属于 if 内的代码块, 意味着条件成立才执行, 条件不成立, 则不执行.
在代码2 中,print(“world”)没有缩进,这个语句是 if 外部的代码,不属于 if 内部的代码块. 意味着条件无论是否成立, 都会执行.
在Python中,缩进表示代码块.
在if, else, elif, while, for…需要跟上代码块的部分,都是需要使用缩进来表示的.
在 C++ / Java 中, 对于代码缩进是没有强制要求的~ 缩进具体怎么写都不影响代码的编译运行结果.
如果缩进没有好好的统一风格来写,将会出现错误;
另外,代码块内部还可以嵌套代码块.
a = input("请输入第一个整数:") b = input("请输入第二个整数:") if a == '1': if b == '2': print("aaa") print("bbb") print("ccc")
在这个代码中
print(“hello”)具有两级缩进,属于 if b == “2” 条件成立的代码块.
print(“worId”)具有一级缩进,属于 if a == “1” 条件成立的代码块.
print(“python”)没有缩进,无论上述两个条件是否成立, 该语句都会执行.
基于缩进的方式表示代码块,带来的好处就是强制要求程序猿要写明确的缩进,来明确代码之间的相对关系.如果缩进书写的不对,则直接报错.
像C++ / Java这些语言, 即使完全不写缩进, 语法也不会报错.代码可读性就比较差.
同时, 带来的坏处就是,如果缩进层次比较多,就容易分不清楚某个语句属于哪个层级.
if a == 1: if b == 2: if c == 3: if d == 4: if e== 5: if f == 6: if g == 7: print ("hello") print("1") print("2")
由于嵌套的层数太多了,这俩语句对应哪一级代码块, 其实是并不容易观察的!!
因此这里的写法更容易出错 相比于 C++ java 中的 {}的写法
请问,上述代码中的 print(“1”)和 print(“2”)属于哪—级缩进?
因此, 就有了 “写 Python 需要自备游标卡尺” 这个梗.
注意:
a = input("请输入一个数字:") if a != '1': # 啥都不做 pass else: print('hello')
在使用条件语句的适合,如果出现像上面的情况,不可以不写,必须要有语句,不然会出现报错,这时候我们要用到
pass
语句来解决这个问题。
循环语句
有些操作是需要反复执行的.这种就需要使用循环.
while 循环
基本语法格式
while 条件: 循环体
- 条件为真, 则执行循环体代码.
- 条件为假,则结束循环.
代码示例:打印 1-10 的整数
num = 1 while num <= 10: print(num) num += 1
代码示例:计算 1-100 的和
sum=0 num = 1 while num <= 100: sum += num num += 1 print (sum)
代码示例:计算5 的阶乘
result = 1 n=1 while n <= 5: result *= n n+=1 print (result)
代码示例: 求 1! + 2! + 3! + 4! + 5!
num = 1 sum =0 while num <= 5: factorResult = 1 i=1 while i <= num: factorResult *= i i += 1 sum += factorResult num += 1 print (sum)
for 循环
基本语法格式
for 循环变量 in 可迭代对象: 循环体
注意:
python 的 for 和其他语言不同, 没有 “初始化语句”,“循环条件判定语句”,“循环变量更新语句”, 而是更加简单
所谓的"可迭代对象",指的是"内部包含多个元素,能一个一个把元素取出来的特殊变量"
代码示例:打印 1-10
for i in range(1, 11): print(i)
使用 range 函数, 能够生成一个可迭代对象. 生成的范围是 [1, 11), 也就是 [1, 10]
range 是一个 内建函数.起到的效果就是得到一个"可迭代对象"
这个可迭代对象中就包含了一系列的整数.
range(beg, end) => [beg, end)
前闭后开区间.range还提供了第三个参数~ 表示"步长" 默认的步长值是 1
当前有个内建函数, sum与自己定义的变量和内建函数冲突了
虽然不影响运行,但是代码后面就无法使用内建函数 sum
使用shift + F6可以针对变量进行重命名 会智能的分析咱们的代码,自动的把所有需要修改的名字都统一替换了
代码示例: 打印 2, 4,6,8,10
for i in range(2, 12, 2): print(i)
通过 range 的第三个参数, 可以指定迭代时候的"步长".也就是一次让循环变量加几.
代码示例: 打印 10-1
for i in range(10, 0, -1): print (i)
range的步长也可以设定成负数.
代码示例:求 1-100 的和
sum = 0 for i in range(1,101) sum += i print(sum)
关于continue和break
continue 立即结束当前这次循环, 进入下次循环.
break 立即结束整个循环.
代码示例: 打印 2, 4,6,8,10
for i in range(2, 12, 2): print(i)
for i in range(2, 12, 2): if i == 6: break print(i)
for i in range(2, 12, 2): if i == 6: continue print(i)
如果对循环语句还是不太理解,可以看一下下面的文章
python数据分析——Python语言基础(数据结构基础)