目录
- if语句
- input()函数
- if - else语句
- if - elif - else语句
- while语句
- 循环嵌套
- break和continue
- 程序优化-向更加优秀的代码看齐
- 运用
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得运行时间少的多了。
- 其实还有更快的方法,大家可以一起继续学习下去哦!
网友评论