Python基础入门:从变量到异常处理—阿里云天池 Task 1-2

条件语句

1.if语句

if expression:
    expr_true_suite
  • if语句的expr_true_suite代码块只有当条件表达式expression结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。
  • 单个if语句中的expression条件表达式可以通过布尔操作符and,or和not实现多重条件判断。
num = int(input("输入一个数字:"))
if num % 3 == 0:
    print("你输入的数字可以整除数字3")

2.if-else语句

if expression:
    expr_true_suite
else:
    expr_false_suite
  • if搭配使用else关键字,如果if语句的条件表达式结果布尔值为假,那么程序将执行else语句后的代码。
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp) # input函数将接收的任何数据类型都默认为str。
if guess == 666:
    print("你太了解小姐姐的心思了!")
    print("哼,猜对也没有奖励!")
else:
    print("猜错了,小姐姐现在心里想的是666!")
print("游戏结束,不玩儿啦!")
  • if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构。
proof = int(input("输入驾驶员每 100ml 血液酒精的含量:"))
if proof < 20:
    print("驾驶员不构成酒驾")
else:
    if proof < 80:
        print("驾驶员已构成酒驾")
    else:
        print("驾驶员已构成醉驾")

3.if-elif-else语句

if expression1:
    expr1_true_suite
elif expression2:
    expr2_true_suite
    .
    .
elif expressionN:
    exprN_true_suite
else:
    expr_false_suite
  • elif语句即为else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。
# 根据学生成绩来评优良差等级
if a > 90:        # 大于90
    print('优')
elif a > 80:     # 90-80因为上一句已经把大于90的排除了
    print('良')
elif a > 70:
    print('中')  
elif a > 60:
    print('及格')
else:
    print('差')

注意:

  • 每个条件后面要使用冒号“:”,表示接下来是满足条件后要执行的语句块。
  • 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 在Python中没有switch–case语句。

4.assert关键词

  • assert这个关键词我们称之为“断言”,当这个关键词后边的条件为False时,程序自动崩溃并抛出AssertionError的异常。
  • 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。
import sys
assert ('win32' in sys.platform), "该代码只能在Windows下执行"

# 接下来要执行的代码

循环语句

1.while循环

  • while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句。
while 布尔表达式:
    代码块
  • while循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。
  • 如果布尔表达式不带有<、>、==、!=、in、not in 等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
  • 在Python中没有do…while循环。
n = 100
sum = 0
counter = 1
while counter <= n:
    sum = sum + counter
    counter += 1
print("1 到 %d 之和为: %d" % (n,sum))

2.while-else循环

while 布尔表达式:
    代码块
else:
    代码块
  • 当while循环正常执行完的情况下,执行else输出,也就是布尔表达式为false时执行else的语句块,如果while循环中执行了跳出循环的语句,比如break,将不执行else代码块的内容。
count = 0
while count < 5:
   print (count, " 小于 5")
   count = count + 1
else:
   print (count, " 大于或等于 5")
count = 0
while count < 5:
    print("%d is  less than 5" % count)
    count = 6
    break
else:
    print("%d is not less than 5" % count)

# 0 is  less than 5

3.for循环

  • for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。
  • 每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。
for 迭代变量 in 可迭代对象:
    代码块
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
    print (x, end=' ')

# C C++ Perl Python
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for key, value in dic.items():
    print(key, value, sep=':', end=' ')
    print(key, end=' ')
    print(value, end=' ')
    
# a:1 b:2 c:3 d:4 
# a b c d 
# 1 2 3 4

4.for-else循环

for 迭代变量 in 可迭代对象:
    代码块
else:
    代码块
  • 当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while-else语句一样。
# 字符串
strs = "Hello World."
for i in strs:
    print(i,end=" ")
#     H e l l o   W o r l d . 运行OK
else:
    print("运行OK")
print()

# 列表
lst = [1,2.3,8+9j,'abc',(4,5),{7,8,'a'},{'a':4}]
for i in lst:
    print(i,end=" ")
#     1 2.3 (8+9j) abc (4, 5) {8, 'a', 7} {'a': 4} 运行OK
else:
    print("运行OK")
print()

# 元组
tup = (1,2,3,4,5,6)
for i in tup:
    print(i,end=" ")
#     1 2 3 4 5 6 运行OK
else:
    print("运行OK")
print()

# 字典
dic = {'a':{'b':123},(4,5):'str',123:[4,5,6]}
# 键为不可变类型 字符串、元组、数字
for i in dic:
    print(i,end=" ")
#     a (4, 5) 123 运行OK
else:
    print("运行OK")
print()

# 集合
set_1 = {1,2.5,'a',(7,8,9)}
for i in set_1:
    print(i,end=" ")
#     1 2.5 a (7, 8, 9) 运行OK
else:
    print("运行OK")
print()

5.range()函数

range([start,] stop[, step=1])
  • 这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
  • step = 1,步长,表示第三个参数的默认值是1。
  • range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。
for i in range(3, 7):  # 不包含7
    print(i)

for i in range(1, 20, 4):
    print(i)

6.enumerate()函数

enumerate(sequence, [start=0])
  • enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
  • sequence:一个序列、迭代器或其他支持迭代对象。
  • start:下标起始位置。
  • 返回 enumerate(枚举) 对象
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
lst = list(enumerate(seasons, start=1))  # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
  • enumerate()与 for 循环的结合使用。
for i, a in enumerate(A)
    do something with a
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
    print(i, element)
print('Done!')

7.break语句

  • break语句可以跳出当前所在层的循环。
for letter in 'Python':
    if letter == 'h':
        break
    print('当前字母 :', letter)

8.continue语句

  • continue终止本轮循环并开始下一轮循环。
# 只打印0-10之间的奇数
n = 0
while n < 10:
    n = n + 1
    if n % 2 == 0:      # 如果n是偶数,执行continue语句
        continue        # continue语句会直接继续下一轮循环,后续的print()语句不会执行
    print(n)

9.pass语句

  • pass语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而pass语句就是用来解决这些问题的。
def function():
    # 在Python3.x的时候pass可以写或不写
    pass

10.推导式

  • Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。

  • 列表推导式

[ expr for value in collection [if condition] ]
x = [-4, -2, 0, 2, 4]
y = [a * 2 for a in x]
print(y)
# [-8, -4, 0, 4, 8]

x = [i ** 2 for i in range(1, 10)]
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]

x = [(i, i ** 2) for i in range(6)]
print(x)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]

x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]

a = [(i, j) for i in range(0, 3) for j in range(0, 3)]
print(a)
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
x[0][0] = 10
print(x)
# [[10, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]

a = [(i, j) for i in range(0, 3) if i < 1 for j in range(0, 3) if j > 1]
print(a)
# [(0, 2)]
  • 元组推导式
( expr for value in collection [if condition] )
a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>

print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  • 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
  • 集合推导式
{ expr for value in collection [if condition] }
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
  • 其它
  • 内置函数next(iterator[, default]),返回迭代子下一个元素的值,主要通过调用__next__()方法来实现的。如果default参数有设置,当下一个元素不存在时,就返回default参数的值,否则抛出异常StopIteration。
e = (i for i in range(10))
print(e)
# <generator object <genexpr> at 0x0000007A0B8D01B0>

print(next(e))  # 0
print(next(e))  # 1

for each in e:
    print(each, end=' ')
# 2 3 4 5 6 7 8 9
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值