一.Python解释器的使用和PyCharm的使用
print(20)
小括号是英文状态下的小括号
1.2.程序设计语言
机器语言:二进制语言
汇编语言:使用方便助记符与机器语言指令一一对应
高级语言:是接近自然语言的一种计算机程序语言—java和python
编译与解释:将源代码转换为目标代码的过程,通常源代码是高级语言,目标代码是机器语言代码,执行编译的计算机程序为编译器(compiler)
解释型:将源代码逐条转换为目标代码的过程,通常源代码是高级语言,代码执行解释的计算机程序为解释器(Interpreter)
1.3.python语言简介:
print('hello,python')
二.print()函数完整的语法格式:
print(输出内容)
print(value,...,sep='',end='\n',file=None)
a=100#变量a,值为100
b=50#变量b,值为50
print(90)
print(a)#输出变量的值
print(b)#输出a*b的运算结果,运算结果为5000
print('北京欢迎你!')
#不换行一次输出多个数据
print(a,b,'要么出众要么出局')
#输出ASCII码所对应的字符
print('b')
print(chr(98))
print('C')
print(chr(67))
# 中文编码的范围是[u4e00~u9fa5]
print('[')
print(chr(91))
print(8)
print(chr(56))
#使用print函数输出中文Unicode
print(ord('北'))
print(ord('京'))
print(chr(21271),chr(20140))
# 使用print函数将内容输出到文件
fp=open('note.txt','w')#打开文件write
print('北京欢迎你', file=fp)# 将北京欢迎你输出(写入)到note.txt文件中
fp.close() #Reload in'GBK'
三.input函数的使用(获取到的数据永远都是字符串类型)
3.1 使用 input() 语句可以从键盘获取输入,使用一个变量接收(存储),input 语句获取的键盘输入数据
3.2 input 接收的是输入的内容
print("请问你是谁")
name = input ()
print(f"Get!!! 你是{name}")
name = input ("请问你是谁 ")
print(f"Get!!! 你是{name}")
# 使用连接符连接多个字符,字符串和字符串可以连接
# print('北京欢迎你'+'2023')
name=input("Enter your name:")# input按照字符串处理
print('我的姓名是'+name)
num=input("请输入幸运数字")
print('您的幸运数字是'+num) #连接成功,说明num是字符串类型
num=int(num)#使用内置函数int将num转成整数类型
print('您的幸运数字是:',num)# 整数,使用,在同一行分割
四.python中的注释
注释:在程序代码中对程序代码进行解释说明的文字。
作用:注释不是程序,不能被执行,只是对程序代码进行解释说明,让别人可以看懂程序代码的作用,能够大大增强程序的可读性。
4.1 单行注释:#,#号和注释内容一般建议以一个空格隔开
#要求从键盘输入出生年份,要求四位的年份,举例:1990
year=input('请输入您的出生年份')
4.2 多行注释:本质上是字符串, 一对三个双引号 引起来 “”“注释内容”“” 来解释说明一段代码的作用使用方法
'''
版权所有:
文件名:
创建人:
'''
4.3 中文声明注释:
# codding=utf-8
# 中文声明注释,一定要写在第一行
print('hello')
.4.4 多行注释中能否使用多行注释?不可以,三引号之间会就近匹配
五.代码缩进与本章总结
5.1 代码缩进:每行语句开始前的空白区域
用来表示python程序间的包含和层次关系
类定义、函数定义、流程控制语句以及异常处理语句等行尾的冒号和下一行的缩进表示一个代码块的结束
通常情况下四个空格作为缩进量
# 一般代码 不需要缩进
print('hello')
print('world')
# 类的定义
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# 函数的定义
def fun():
print('hello')
5.2 程序设计语言又称为编程语言,计算机程序是使用程序语言组织起来的一组计算机指令
计算机指令就是指挥机器工作的指示和命令,编程语言可分为机器语言、汇编语言、高级语言
采用编译方式执行的语言为静态语言
采用解释方式执行的语言称为脚本语言
IPO指的是输入、处理和输出
print函数完整的语法格式:print(value,…,sep=’ ‘,end=’\n’,file= None)
输入函数input的语法格式为variable=input(‘提示文字’)
严格缩进表示程序逻辑
六.章节习题
fp=open('test.txt','w')#打开文件
print('人生苦短,我用python',file=fp)#输出内容到文件
fp.close()#关闭文件
name=input("Enter your name:")
age=input("Enter your age:")
motto=input("Enter your motto:")
print('---------------自我介绍---------------')
print('姓名:',name)# 不是拼接,而是逗号隔开
print('年龄:',age)
print('座右铭:',motto)
七.数据类型和运算符
7.1查询python中的保留字
import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))# 获取保留字的个数
保留字严格区分大小写
7.2.1 python标识符的命名规则:
1.可以是字符(英文、中文)、下划线“-”和数字,并且第一个字符不能是数字
2.不能使用python中的保留字
3.标识符严格区分大小写
4.以下划线开头的标识符有特殊意义,一般使用类似的标识符,允许使用中文作为标识符,但不建议使用
7.2.2python标识符的命名规范:
1.模块名尽量短小,并且全部使用小写字母,可以下划线分割多个字母
2.模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母,如:grame_main
3.包名尽量短小,并且全部使用小写字母,不推荐使用下划线。如:com.ysjpython,不推荐使用com_ysjpython
4.类名采用单词首字母大写形式(Pascal风格)。如:MyClass
5.模块内部采用“_”+Pascal风格的类名组成,例如:在MyClass中的内部类_InnerMyClass
6.函数、类的属性和方法的命名,全部使用小写字母,多个字母之间使用下划线分隔
7.常量命名时采用全部大写字母,可以使用下划线
8.使用单下划线“_”开头的模块变量或函数是受保护的,在使用“from xxxx import*”语句从模块中导入时,这些模块变量或函数不能被导入
9.使用双下划线开头和结尾的是python的专用标识,如:init()表示初始化函数
7.3变量与常量:
print语句如何输出多份内容?print(内容1, 内容2, …, 内容N)
luck_number=8 #创建一个整型变量luck_number,并为其赋值为8
my_name='小王'# 字符串类型的变量
print('luck_number的数据类型是:',type(luck_number))# <class 'int'>
print(my_name,'的幸运数字是:',luck_number)
#python动态修改变量的数据类型,通过赋不同类型的值可以直接修改
luck_number='北京欢迎你'
print('luck_number的数据类型',type(luck_number))#<class 'str'>
#在python中允许多个变量指向同一个值
no=number=1024 # no与number都指向了1024这个整数值
print(no,number)
print(id(no))# id()查看对象的内存地址
print(id(number))
pi=3.1415926# 定义了一个变量
PI=3.1415926#定义一个常量
7.3数值类型(字面量类型)
7.3.1字面量
什么是字面量:在代码中,被写下来的固定的值(数据),叫做字面量
"abcd"
1
3.6
7.3.2字面量类型:值(数据)类型
整数类型表示的数值是没有小数部分的数值,包含正整数、负整数和0
num=987
num2=0b10101010# 使用二进制表示整数
num3=0o765# 使用八进制表示整数
num4=0x87ABF# 使用十六进制表示整数
print(num)
print(num2)
print(num3)
print(num4)
数值类型:浮点数类型–表示带有小数点的数值,由整数部分和小数部分组成
注意事项:两个浮点类型的数在进行运算时,有一定的概率运算结果后增加一些“不确定的”尾数
python中的复数与数学中的复数形式完全一致,由实部和虚部组成,在python中实数使用.real表示,虚数部分使用.imag表示
浮点数的使用
height=187.6
print(height)
print(type(height))# type()查看height这个变量的数据类型
x=10
y=10.0
print('x的数据类型:',type(x))# int
print('y的数据类型:',type(y))# float
x=1.99E1413
print('科学计数法',x,'x的数据类型',type(x))
print(0.1+0.2)#不确定的尾数问题
print(round(0.1+0.2,1))#保留一位小数
复数类型的使用
x=123+456j
print('实数部分:',x.real)
print('虚数部分',x.imag)
7.4 字符串类型:字符串,又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成。所以叫做字符的串
7.4.1 Python中,字符串需要用双引号(“字符串内容”)包围起来,被引号包围起来的,都是字符串(实际使用字符串时,无论是单引号,双引号,还是三引号都可以)
7.4.2 值(数据)类型
7.4.2.1字符串类型的使用:
city='天津'
address='天津市宝坻区'# 用单引号和双引号是一样的
print(city)
print(address)
# 多行字符串 三引号
info='''地址:天津市宝坻区
收件人:
手机号:
'''
info2="""地址:天津市宝坻区
收件人:
手机号:
"""
print(info)
print('---------------')
print(info2)
7.4.2.2 字符串拼接:使用“+”号连接字符串变量或字符串字面量
name = "阿蛮"
print("这位青年的名字叫做" + name + ",他今年18岁了")
7.4.2.3 字符串无法和非字符串变量进行拼接 因为类型不一致,无法接上
name = "阿蛮"
age = 18
print("这位青年的名字叫做" + name + "年龄周岁是" + age)
7.4.2.4字符串格式化:当变量过多时,我们会发现上述的字符串拼接并不好用,由此引出字符串格式化这个方法
name = "CSDN"
message = "学IT就来%s" % name
print(message)
% 表示:占位
s 表示:将变量变成字符串放入占位的地方
%s:占个位置,等一会有个变量过来,把它变成字符串放到占位的位置。多个变量占位,变量要用括号括起来,并按照占位的顺序填入
7.4.2.5 格式化的精度控制
1. m ,控制宽度,要求是数字( 很少使用 ) , 若 设置的宽度小于数字自身,不生效
2. n ,控制小数点精度,要求是数字,会进行小数的四舍五入 示例:
2.1 %5d :表示将整数的宽度控制在 5 位,如数字 11 ,被设置为 5d ,就会变成: [ 空格 ][ 空格 ][ 空格 ]11 ,用三个空格补足宽度。
2.2 %5.2f :表示将宽度控制为 5 ,将小数点精度设置为 2, 小数点和小数部分也算入宽度计算。如,对11.345设置了%7.2f 后,结果是:[空格][空格]11.35。2个空格补足宽度,小数部分限制2位精度后,四舍五入为 .35 (小数点本身也是占一个宽度的) %.2f:表示不限制宽度,只设置小数点精度为2,如11.345设置%.2f后,结果是11.35
7.4.2.转义字符的使用
7.4.2…1引号的嵌套:使用转移字符(\)来将引号解除效用,变成普通字符串
print('北京')
print('欢迎你')
print('---------------')
print('北京\n欢迎你')# 遇到\n即换行
print('北\n京\n欢\n迎\n你')
print('----------')
print('北京北京\t欢迎你')
print('hello\toooo')#hello是五个字符,一个制表位是8个字符 8-5=3
print('hellooooo')
print('老师说:\'好好学习,天天向上\'')
print('老师说:\"好好学习,天天向上\"')
# 原字符,使转义字符失效的符号r或R
print(r'北\n京\n欢\n迎\n你')
print(R'北\n京\n欢\n迎\n你')
7.4.2.3 字符串的索引和切片
s='HELLOWORLD'
print(s[0],s[-10])# 序号0和序号-10表示的是同一个字符
print('北京欢迎你'[4])# 获取字符串中索引为4
print('北京欢迎你'[-1])
print('--------------------')
print(s[2:7]) # 从2开始到7结束不包含7 正向递增
print(s[-8:-3])# 反向递减
print(s[:5])#默认N从0开始
print(s[5:])# M 默认切到字符串的结尾
7.4.2.4字符串类型的操作
x='2020年'
y='北京冬奥会'
print(x+y)# 连接两个字符
print(x*10)# 对x这个字符串的内容复制10次
print(10*x)
print('北京'in y)#True
print('上海' in y)#False
7.4.2.5布尔类型的使用
x=True
print(x)
print(type(x))
print(x+10) #11 -->1+10
print(False+10)# 10-->0+10
print(bool(18))# 测试一下整数18的布尔值 True
print(bool(0),bool(0.0))#False
# 非0的整数布尔值都是True
print(bool('北京欢迎你'))#True
print(bool(''))#False
# 所有非空字符串的布尔值都是True
print(bool(False))
print(bool(None))
7.5类型转换函数
任何类型,都可以通过str(),转换成字符串
字符串内必须真的是数字,才可以将字符串转换为数字
x=10
y=3
z=x/y#在执行除法运算的时候,将运算结果赋值给z
print(z,type(z))#隐士转换,通过运算隐士的的转了结果的类型
# float类型转成int类型,并保留整数部分
print('float类型转成int类型:',int(3.14))
print('float类型转成int类型:',int(3.9))
print('float类型转成int类型:',int(-3.14))
print('float类型转成int类型:',int(-3.9))
# 将int转成float类型
print('将int转成float类型:',float(10))
# 将str转成int类型
print(int('100')+int('200'))
#将字符串转成int和float时报错
#print(int('18a'))
#print(int('3.14'))
#print(float('45a.987'))
#chr()ord()一对
print(ord('扬'))#扬在unicode表中对应的整数值
print((chr(26472)))#26472整数在unicode表中对应的字符是什么
# 进制之间的转换操作,十进制与其他进制之间的转换
print('十进制转成十六进制',hex(26472))
print('十进制转成八进制',oct(26472))
print('十进制转成二进制',bin(26472))
7.6 type() 语句:语法–type(被查看类型的数据)
7.6.1在print语句中,直接输出类型信息:
print(type("云边有个小卖部"))
print(type(123))
print(type(11.345))
7.6.2 用变量存储type()的结果(返回值):
type_1 = type("云边有个小卖部")
type_2 = type(123)
type_3 = type(11.345)
print(type_1)
print(type_2)
print(type_3)
type(变量)可以输出类型,查看的是变量存储的数据的类型。因为,变量无类型,但是它存储的数据有
7.7 eval函数
7.7.1eval函数的使用
from idlelib.format import get_indent
s='3.14+3'
print(s,type(s))
x=eval(s)
print(x,type(x))
#eval函数经常与input()函数一起使用,用来获取用户输入的数值
age=eval(input('请输入您的年龄:'))#将字符串类型转成了int类型,相当于int(age)
print(age,type(age))
height=eval(input('请输入您的身高'))
print(height,type(height))
hello='北京欢迎你'
print(hello)
print(eval('hello'))#去掉作用的引号,没有引号的hello,相当于变量的值
#print(eval('北京欢迎你'))变量在代码中未定义
7.8.1算数运算符
print('除法',10/2)
print('整除',10//3)
print('幂运算',2**4)
7.8.2赋值运算符
#支持系列解包赋值
a,b=10,20
print(a,b)
print('--如何交换两个变量的值呢')
a,b=b,a#将b的值赋值给a,a的值赋值给b
print(a,b)
7.8.3比较运算符
7.8.4 逻辑运算符
按位异或:相同为0,不同的为1
按位取反:
print('按位与运算',12&8)
print('按位或运算',4|8)
print('按位异与运算符:',31^32)
print('按位取反:',~123)
print('按位与运算',12&8)
print('按位或运算',4|8)
print('按位异与运算符:',31^32)
print('按位取反:',~123)
# 左乘右除
print('左移位:',2<<2)#8,表示的是2向左移动两位 2 *2*2
print('左移位:',2<<3)# 相当于2* 2*2*2
print('右移位',8>>2)#8向右移动两位相当于8//2,4//2
print('右移位',-8>>2)#
八、本章总结
f16+2(16^0)
[N:M]:不包括M
B选项不可以
num=eval(input('请输入一个四位整数:'))
print('个位上的数',num%10)
print('十位上的数',num//10%10)
print('十位上的数',num//10%10)
print('百位上的数',num//100%10)
print('千位上的数',num//1000)
# 字符串的索引
print('-'*40)
num=input('请输入一个四位的整数:')#num是一个字符串类型
print('个位上的数:',num[3])
print('十位上的数',num[2])
print('百位上的数',num[1])
print('千位上的数',num[0])
father_height=eval(input('请输入爸爸的身高'))
mother_height=eval(input('请输入妈妈的身高'))
son_height=(father_height+mother_height)*0.54
print('预测儿子的身高:',son_height)
九.程序的描述方式
伪代码:介于自然语言和编程语言之间的一种算法描述语言,程序比较小,直接使用代码描述
十.顺序结构
#赋值运算符的顺序 从右到左
name='张三'
age=20
a=b=c=d=100
a,b,c,d='room'# 字符串分解赋值
print(a)
print(b)
print(c)
print(d)
print('------------输入/输出语句也是典型的顺序结构---------')
name=input('请输入您的姓名:')
age=eval(input('请输入您的年龄:'))
luck_number=eval(input('请输入您的幸运数字:'))
print('姓名:',name)
print('年龄:',age)
print('幸运数字:',luck_number)
十一.选择结构
age = int(input()) #将字符串转换为整型
print(f"我今年已经{age}岁了")
if age >= 18 :
print("我已经成年了")
print("即将步入大学生活")
print("时间过得真快")
11.1 注意事项:判断条件的结果一定要是布尔类型。归属于 if 语句的代码块,需在前方填充 4 个空格缩进
from sys import flags
number=eval(input("请输入您的六位中奖号码 "))
# 使用if语句
if number==987654321: #等值判断
print('恭喜您,中奖了')
if number!=987654321:
print('您未中奖')
print('------以上if判断的表达式,是通过比较运算符计算出来,结果是布尔类型-----')
n=98 #赋值操作
if n%2: #98和2的余数是0,0的布尔值是False,非0的布尔值为True
print(n)# 由于98%2的余数是0,所以代码不执行
if not n%2: #98%2的余数是0,0的布尔值是False,not False的结果为True
print(n,'为偶数')
print('------------判断一个字符串是否为空字符串------------')
x=input('请输入一个字符串')
if x: # 在python中一切皆对象,每个对象都有一个布尔值,而非空字符串的布尔值为True
print('x是一个非空字符串')
if not x:#空字符串的布尔值是false,取反,not false的结果为True
print('x是一个非空字符串')
print('-------表达式是否是空字符串-----------')
flag=eval(input('请输入一个布尔类型的值:False或True'))
if flag:
print('falg的值为True')
if not flag:
print('flag的值为false')
print('--------使用if语句时,如果语句块中有一句代码,可以将语句块直接写在冒号后面-----')
a=10
b=5
if a>b:max=a#语句块只有一句,赋最大值
print('a和b的最大值为:',max)
十二.双分支结构(• else 不需要判断条件,当 if 的条件不满足时, else 执行else 的代码块,同样要 4 个空格作为缩进)
from selectors import SelectSelector
from setuptools.command.build_ext import if_dl
number=eval(input("请输入六位中奖号码 "))
# if....else
if number==987654:
print('恭喜中奖')
else:
print('你没有中奖')
print('-----以上代码可以使用条件表达式进行简化------')
result='恭喜您中奖了!'if number==987654 else '你未中奖'
print(result)
print('恭喜您中奖了'if number==987654 else '您未中奖')
十三.多分支结构
13.1 elif 可以写多个,判断是互斥且有序的,上一个满足后面的就不会判断了,在条件判断中,直接写 input 语句
score=eval(input('请输入您的成绩:'))
# 多分支结构
if score<0 or score>100:
print('成绩有误')
elif 0<=score<60:
print('E')
elif 60<=score<70:
print('D')
elif 70<=score<80:
print('C')
elif 80<=score<90:
print('B')
else:
print('A')
十四.嵌套if的使用:
answer=input('请问,您喝酒了吗')
if answer=='y':# answer的值为y表示喝酒了
proof=eval(input('请输入酒精含量:'))
if proof<20:
print('构不成酒驾')
elif proof<80:
print('构成酒驾,不要开车')
else:
print('你走吧,没你啥事')
十五.多个条件的连接
user_name = input("请输入您的用户名")
pwd=input('请输入您的密码')
if user_name == 'hh' and pwd == '0000':
print('登录成功')
else:
print('用户名或密码不正确')
score=eval(input('请输入您的成绩'))
if score<0 or score>100:
print('成绩无效')
else:
print('您的成绩为:',score)
十六.python3.11新特性–模式匹配
score=input('请输入成绩等级')
match score:
case 'A':
print('优秀')
case 'B':
print('良好')
case 'C':
print('中等')
case 'E':
print('及格')
十七.循环结构
# 遍历字符串
for i in 'hello':
print(i)
# range()函数:Python中的内置函数:产生一个[n,m]的整数序列,包含n,不包含m
for i in range(1,11):
if i % 2 == 0:
print(i,'是偶数')
#print(i)
# 计算1-10之间的累加和
s=0 #用于存储累加和
for i in range(1,11):
s+=i;#相当于s=s+i
print('1-10之间的累加和为:',s)
'''
153=3*3*3+5*5*5+1*1*1
'''
for i in range(100,1000):
sd=i%10#个位上的数字
tens=i//10%10 #获取十位上的数字
hundreds=i//100#获取百位上的数字
#判断
if sd**3+tens**3+hundreds**3==i:
print(i)
for…else…结构:只有循环正常结束之后才会执行,如果遇到break是不正常的
for循环的扩展形式:
for 临时变量 in 待处理数据集:
循环满足条件执行的代码
s=0 #用于存储累加和
for i in range(1,11):
s+=i#循环正常循环10次执行else
else:
print('1-10之间的累加和为:',s)
无限循环while
无限循环while的使用
#1.初始化变量
answer=input('今天要上课吗?y/n')
while answer=='y':#2.条件判断
print('好好学习,天天向上')#语句块
#4.改变变量
answer=input('今天要上课吗?y/n')
#1-100之间的累加和
s=0#存储累加和
i=1#1.初始化变量
while i<=100:#2.条件判断
s+=i#3.语句块
#4.改变变量
i+=1;
print('1-100之间的累加和:',s)
中途没有遇到任何break中断循环的情况,可以使用while-else
#1-100之间的累加和
s=0#存储累加和
i=1#1.初始化变量
while i<=100:#2.条件判断
s+=i#3.语句块
#4.改变变量
i+=1;
else:
print('1-100之间的累加和:', s)
使用无限循环模拟用户登录
# 1.初始化变量
i=0
while i<3:#2.条件判断
user_name=input("请输入您的用户名")
pwd=input('请输入您的密码')
#3.登录操作,if...else..
if user_name=='hh' and pwd=='8888':
print('系统正在登录,请稍后')
# 需要改变循环变量,目的退出循环
i=8# 第三行 判断i<3,8<3 False退出while循环(3次以内输入8)
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
i+=1#相当于i=i+1 #4.改变变量
# 单分支操作
if i==3:# 当用户名或密码输入三次不正确的时候,循环执行结束了,i的最大值为3
print('三次均错了')
十八.嵌套循环输出和打印三角形
range语法:range(num1,num2,step)获得一个从num1开始,到num2结束的数字序列(不含num2本身,数字之间的步长,以step为准(step默认为1)
假设外层循环执行3次,内层循环就执行四次,总共3*4次,无限循环可以嵌套遍历循环,遍历循环也可以嵌套无限循环
#三行四列
for i in range(1,4): # 外层循环
for j in range(1,5):#内存循环四次打印完成换行
print('*',end='')
print()# 空的print语句,作用是换行
print('------------------')
#内层循环和外层循环的次数相等,第一行执行1次,第二行执行两次
for i in range(1,6):#5行,*的个数与行相同,range(1,2),第二行,range(1,3)
for j in range(1,i+1):
print('*',end='')
print()# 空的print语句,换行
print('------------------')
# 倒三角形
# 1--->5 range(1,6),2--->4 range(1,5) ,3--->3 range(1,4)...
for i in range(1,6):
for j in range(1,7-i):
print('*',end='')
print()#内层循环执行完毕,空print()换行
print('------------------')
# 等腰三角形
'''
&&&&*
$$$***
$$*****
$*******
'''
for i in range(1,6):#五行
#倒三角形5 4 3 2 1
for j in range(1,6-i):#空格不是空字符串,空格才能占位置
print(' ',end='')# range 2 4 6 8 10
#等腰三角形 1 3 5 7 9
for k in range(1,2*i):
print('*',end='')
print()
嵌套循环打印出菱形
from Tools.scripts.generate_global_objects import Printer
row=eval(input('请输入菱形的行数:'))
while row%2==0:#判断行数的奇偶性,行数是偶数,重新输入行数
print('重新输入菱形的行数:')
row=eval(input('请输入菱形的行数:'))
#7行 (7+1)//2
top_row=(row+1)//2#上半部分的行数 4
# 倒三角形 1 2 3 4
# 4 3 2 1
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
# 1,3,5,7...等腰三角形range(1,2) range(1,4) 2 4 6 8 10
for k in range(1,i*2):
print('*',end='')
print()#两个并列的for循环执行完毕之后,再换行
#下半部分:直角三角形加等腰三角行
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1, i + 1):
# 直角三角形
print(' ', end='')
# 倒三角形 8 6 4 2
for k in range(1, 2*bottom_row-2*i+2):
print('*',end='')
print()
from Tools.scripts.generate_global_objects import Printer
row=eval(input('请输入菱形的行数:'))
while row%2==0:#判断行数的奇偶性,行数是偶数,重新输入行数
print('重新输入菱形的行数:')
row=eval(input('请输入菱形的行数:'))
#7行 (7+1)//2
top_row=(row+1)//2#上半部分的行数 4
# 倒三角形 1 2 3 4
# 4 3 2 1
for i in range(1,top_row+1):
for j in range(1,top_row+1-i):
print(' ',end='')
# 1,3,5,7...等腰三角形range(1,2) range(1,4) 2 4 6 8 10
for k in range(1,i*2):
if k==1 or k==2*i-1:
print('*',end='')
else:
print(' ',end='')#空格,不是空字符串
print()#两个并列的for循环执行完毕之后,再换行
#下半部分:直角三角形加等腰三角行
bottom_row=row//2
for i in range(1,bottom_row+1):
for j in range(1, i + 1):
# 直角三角形
print(' ', end='')
# 倒三角形 8 6 4 2
for k in range(1, 2*bottom_row-2*i+2):
if k==1 or k==2*bottom_row-2*i+2-1:
print('*',end='')
else:
print(' ',end='')
print()# 当两个并列的for循环执行完毕之后,再换行
十九.break在循环中的使用
s=0# 存储累加和
i=1#1.初始化变量
while i<10:#2.条件判断
s+=i #3.语句块
if s>20:
print('累加和大于20的当前数:',i)
break
i+=1#改变变量
print('-------------------------')
i=0 #统计登录的次数
while i<3: #2.条件判断
#3.语句块
user_name=input('请输入用户名:')
pwd=input('请输入密码:')
if user_name=='hh' and pwd=='0000':
print('系统正在登录,请稍后')
break#非正常结束不会执行else
else:
if i<2:
print('用户名或密码不正确,您还有',2-i,'次机会')
# 4.改变变量
i+=1
else:# while....else
print('三次均输入错误!')#整个过程没有遇到break,执行else
19.1跳转语句在while循环中的使用
for i in 'hello':
if i == 'e':# h和e不一样,执行第四行的输出
break #e
print(i)
print('--------------')
for i in range (3):
# 3.语句块
user_name = input('请输入用户名:')
pwd = input('请输入密码:')
if user_name == 'hh' and pwd == '0000':
print('系统正在登录,请稍后')
break # 非正常结束不会执行else
else:
if i < 2:
print('用户名或密码不正确,您还有', 2 - i, '次机会')
else:
print('三次均输入错误!')
19.2continue在循环当中的代码:跳过本次循环,执行下一次循环
s=0
i=1 #1.初始化变量
while i<=100:#2.条件判断
if i%2==1:# 3.语句块 奇数
i+=1
continue# 不在执行后面的代码
# 偶数累加求和的代码
s+=i
i+=1
print('1-100之间的偶数和',s)
19.2.1continue在for循环中的使用
s=0
for i in range(100):
if i%2==0:
continue
#累加求和的代码
s+=i
print('1-100之间的偶数和:',s)
19.3空语句pass和本章总结
if True:
pass
while True:
pass
for i in range(10):
pass
19.4章节习题
商是0,0的布尔值是false,if后面的永远不可能执行就不会退出循环
一共执行7行,第一次-3打印3个空格和1颗星,第二次2个空格和两颗星
外层循环遍历python,内层循环执行两次,输出两个i,到h退出内层循环,外层循环没有退出,输出一个h退出循环
continue不执行后续的代码
year=eval(input("请输入一个四位的年份: "))
if(year%4==0 and year%100!=0 )or year%400==0:
print(year,'是闰年')
else:
print(year,'年是平年')
#1.初始化变量
answer='y'
#2.条件判断
while answer=='y':#3.循环操作,语句块
print('----------欢迎使用10086查询功能----------------')
print('1.查询当前余额')
print('2.查询当前剩余流量')
print('3.查询当前的剩余通话时长')
print('0.退出系统')
choice=input('请输入您要执行的操作')#input的结果是字符串类型
if choice=='1':
print('当前余额为:234.5元')
elif choice=='2':
print('当前剩余流量为4GB')
elif choice=='3':
print('当前剩余流量为300分钟')
elif choice=='0':
print('程序退出,谢谢您的使用')
break
else:
print('对不起,您输入的有误,请重新输入')
# 4.改变变量
answer=input('还继续操作吗?y/n')
else:#while...else
print('程序退出,谢谢您的使用')
for i in range(1,10):
for j in range(1,i+1):
print(str(j) + "*" + str(i)+'='+str(i*j),end='\t')
print()
import random
rand=random.randint(1,100)#产生1-100之间的随机数
count=1#记录猜的次数
while count<=10:
number=eval(input('1-100之间的数猜一猜'))
if number==rand:
print('猜对了')
break
elif number>rand:
count=count+1
else:
print('小了')
count=count+1# 每猜一次count次数要加一
# 判断次数
if count<=3:
print('真聪明,一共猜了',count,'次')
elif count<=6:
print('还可以,一共猜了',count,'次')