条件控制语句

目录

  1. if语句
  2. input()函数
  3. if - else语句
  4. if - elif - else语句
  5. while语句
  6. 循环嵌套
  7. break和continue
  8. 程序优化-向更加优秀的代码看齐
  9. 运用

1. 条件判断语句(if语句)

• 执行的流程:
• if语句在执行时,会先对条件表达式进行求值判断,
• 如果为True,则执行if后的语句
• 如果为False,则不执行
• 语法:

if 条件表达式 : 
     代码块

• 代码块代码块中保存着一组代码,同一个代码块中的代码,要么都执行要么都不执行
• 代码块以缩进开始,直到代码恢复到之前的缩进级别时结束
• 代码块就是一种为代码分组的机制

2. input() 函数

• 该函数用来获取用户的输入
• input()调用后,程序会立即暂停,等待用户输入
• 用户输入完内容以后,点击回车程序才会继续向下执行
• 用户输入完成以后,其所输入的的内容会以返回值得形式返回

  • 范例:
# hello.py
name = input('请输入你的姓名:')
print('hello,'name')

3. if-else语句

• 语法:

  if 条件表达式 :
      代码块
  else :
      代码块

• 执行流程:
• if-else语句在执行时,先对if后的条件表达式进行求值判断
• 如果为True,则执行if后的代码块
• 如果为False,则执行else后的代码块

  • 范例:
# calc.py
temp = input('请输入1到100之间的数字:')
number = int(temp)
if 1 <= number <= 100 :
    print('你好帅!')
else:
    print('你好丑!')

4. if-elif-else 语句

• 语法:

  if 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
  elif 条件表达式 :
      代码块
   ........
  else :
      代码块

• 执行流程:
• if-elif-else语句在执行时,会自上向下依次对条件表达式进行求值判断,
• 如果表达式的结果为True,则执行当前代码块,然后语句结束
• 如果表达式的结果为False,则继续向下判断,直到找到True为止
• 如果所有的表达式都是False,则执行else后的代码块
• 总结: if-elif-else中只会有一个代码块会执行

# 判断给定年份是否为闰年
print(' 请输入一个年份,我可以判断它是否为闰年:',end = " ")
temp = input()
if not temp.isdigit():
    temp = print(" 抱歉,您的输入有误,下次要输入一个整数呀") 
    temp = 2020
year = int(temp)        
if year%400 == 0:
    print(temp+' 是闰年。')
elif year%4 == 0 and year%100 != 0:
    print(temp+' 是闰年。')
else:
    print(temp+' 不是闰年。')

5. while语句

• 循环语句可以使指定的代码块重复指定的次数.循环语句分成两种,while循环 和 for循环
• 语法:

  while 条件表达式 :
      代码块
  else:
       代码块
  • 范例:
# 小实验1(给定一个数字,打出有一定规律的*)
temp = input('请输入一个数字:')
num = int(temp)
i = 0
while i < num:
    print(' '*(num-i-1)+'*'*(num-i))
    i+=1
else:
    print('打印完成!')
#小实验2
# 编写一个进制转换程序
# bin()将十进制转换为二进制
#需要用到while循环、input()函数、字符串格式化、if-else、数据类型转换等知识点。
q = True 
while q: 
    num = input(' 请输入一个整数 (输入 Q 结束程序 ):') 
    if num != 'Q': 
        num = int(num) 
        print(' 十进制 -> 十六进制 : %d -> 0x%x' % (num, num)) 
        print(' 十进制 -> 八进制 : %d -> 0o%o' % (num, num)) 
        print(' 十进制 -> 二进制 : %d -> ' % num, bin(num)) 
    else: 
        q = False 

6. 循环嵌套

  • Python 语言允许在一个循环体里面嵌入另一个循环。
  • 语法
while 表达式:
   [代码块]
   while 表达式:
      代码块
   代码块

for 变量 in 循环规则:
   [代码块]
   for 变量 in 循环规则:
       代码块
   代码块

7. break和continue

  • break 可以用来立即退出循环语句,包括else语句
  • continue 用来跳过此次循环
# 用*打印倒三角
i = 0
while i < 6:
    j = 0
    while j < 6 - i:
        print('*', end='')
        j += 1
    print()
    i+= 1
  • 再运用之前学习到的格式化字符串的知识,我们就可以打印二年级时被逼着背了几十遍的九九乘法表了。
# 打印九九乘法表
i = 0

while i < 9:
    i += 1
    j = 0
    while j < i:
        j += 1
        print(f'{j}*{i}={i*j}', end=' ')

    print()

8.程序优化-向更加优秀的代码看齐

  • 如果我们想获取100以内的质数,一般来说用text_0就够了
# text_0
i = 2
while i <= 100:
    flag = True
    j = 2
    while j < i:
        if i % j == 0:
            flag = False
        j += 1
    if flag:
        # print(i)
        # 可取消注释看打印出的质数
        pass
    i += 1
  • 但是如果上万呢?十万呢?
    我们就应该动一下我们聪明的大脑,来优化代码,减少其运行时间。如:text_1。
  • 难点:对于每个数n,其实并不需要从2判断到n-1,我们知道,一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n),据此,上述代码中并不需要遍历到n-1,遍历到sqrt(n)即可,因为若sqrt(n)左侧找不到约数,那么右侧也一定找不到约数。
#  text_1
i = 2
while i <= 100000:
    # 十万以内
    flag = True
    j = 2
    while j <= i ** 0.5:
        # 此处运用“难点”得知识点,改进代码。
        if i % j == 0:
            flag = False
            break
            # 此处用break跳出循环,减少运行时间。
        j += 1
    if flag:
        # print(i)
        pass
    i += 1
  • 不需要计算机得统计,我们也可以轻易的判断出text_1比text_0得运行时间少的多了。
  • 其实还有更快的方法,大家可以一起继续学习下去哦!

你可能感兴趣的:(条件控制语句)