对象的布尔值
Python一切皆对象,所有对象都有一个布尔值,可以通过bool()函数获取布尔值
print(bool(False))
print(bool('')) #空字符串
print(bool(None))
print(bool(0))
print(bool(list())) #空列表
print(bool([])) #空列表
print(bool({})) #空字典
print(bool(dict())) #空字典
print(bool(tuple())) #空元组
print(bool(set())) #空集合
# 以上输出皆为False
例如:
age=int(input(‘输入年龄’))
if age:
print(age)
else
print('输入有错')
此处输入有错的情况即为:age=0时,age的bool值为False,不进入if情况,进入else情况
选择结构
- 与C不同的是,if和else后面用冒号 : 且没有大括号,而是用缩进表明结构
if 条件:
aaaaa
else:
2222
银行取款例子:
money=1000;
s=int(input('输入取款金额,不足则退出 ')) #切记此处input为str,要用int转换
if money>=s:
money=money-s;
print('取款结束,余额为:',money)
else:
print('余额不足')
- 同样可以使用类似C的三目运算符进行判断
语法结构:x if 判断条件 else y,如果判断为真运行x部分,否则运行y部分
输入两个数字
numa=int(input()) #注意转换为int
numb=int(input())
print(str(numa)+'大于等于'+str(numb) if numa>=numb else str(numa)+'小于'+str(numb))
由于最后输出为str,所以除了条件部分“numa>=numb”,剩下的部分转换为str类型并用+把字符串连接起来
多分支结构
if 条件1:
11111
elif 条件2:
222222
elif 条件3:
333333
else:
444444
成绩分级练习
score=int(input('输入成绩判断评级: '))
if score>=85 and score<=100:
print(' A')
elif 60<=score<85: #另一种条件书写形式
print(' B')
else:
print(' C')
pass语句
不进行操作,占位符,用在需要语句但是没想好的地方。使程序不报错
if a>=0:
pass
else
pass
pass部分操作未定,占据位置使其不报错,其他地方正常运行
内置函数range()
优点:无论对象的序列多长,只用存储三个元素“start”“stop”和“step”,节约空间类似是个图纸,并没有实质序列
基本range
生成一个整数序列,默认从0开始,到9,不包括10,步长为1
a=range(10)
print(list(a)) #输出序列的每个数字,使用list()包裹变量
不能直接print(a)
确定range首尾
起始值是1,终点是10,步长默认1
b=range(1,10)
print(list(b))
range定首尾及步长
步长为2,及后一个减前一个=2
c=range(1,10,2)
print(list(c))
判断某个数字是否在序列中:
直接用数字 in 序列
,不需要转换成str
print(10 in c) #False
while
和C基本一样
复习一下:判断次数N+1,执行次数N。因为最后一次判断不满足时不执行
例: 求0~5之和
a=0
sum=0
while a<5:
a+=1
sum+=a
print(sum)
- 例:求0~100偶数和
sum=0
a=0
while a<=100:
if a%2==0: #若a取余为0(偶数)则加a
sum+=a
a+=1
print(sum)
或者用bool
sum=0
a=0
while a<=100:
if not bool(a%2): #若a取余为0(偶数)获取bool值为0,再取反为1
sum+=a
a+=1
print(sum)
- 例:求0~100奇数和
sum=0
a=0
while a<=100:
if a%2: #若a取余为1(奇数)则加a
sum+=a
a+=1
print(sum)
for-in
- in表示从字符串、序列等依次取值,也就是遍历
- for-in遍历对象必须是可迭代对象
for 变量 in 迭代对象 :
循环体
- 例如:输出字符串中各个字母
for word in 'abc':
print(word) #依次输出:a,b,c
for i in range(5):
print(i) #依次输出:0,1,2,3,4
即可实现自动获取递增值,
- 也可以不用变量接收
但是因为字符串三个字母,所以循环进行三次
for _ in 'asd':
print('滴滴答滴答')
循环中的else
这是直接面对for循环的else,没有通过break结束,就运行else,可以没有对应的if
Python中:后面的else与for循环是同一层级,若循环非正常结束(即没有运行break语句)则需要运行else。
keyword ='123456'
i=0
for i in range(3): #进行三次循环在range(3)中
s=input('输入密码 ')
if s==keyword:
print('right')
break
else:
print('try again')
else:
print('you have no chance')
循环打印三角形
print(end='')
是使print不换行的函数。
Python中的print函数默认输出一次且换行
也可以在' '
中添加结尾内容,例如'\t'
- for搭配while
for i in range(4):
j=0
while j<=i:
print('*',end=''+'\t' ) #end='' 抑制换行功能。字符串与字符串连接用+
j+=1
print('') #什么也不输出,借助print函数自带换行功能进行换行
- 循环的另一种写法
通过外部i的变化,决定内部range(1,i+1),使内部for循环长度不断增加
for i in range(4):
for j in range(1,i+1):
print('*',end=''+'\t' )
print('')