文章目录
- 判断语句
- if
- 三元运算符
- 循环
- while循环
- break语句
- continue语句
- else语句
- 猜1-100数字
- range函数
- 列表解析
判断语句
if
除了表达式以外,各种各样的数据类型,也可以作为判断条件。对于数字来说,任何值为0的数字都表示False,非0表示
True;其他数据类型,非空为True,空为False
n1 = 10
s1 = 'Python'
if n1 > 5: # 判断条件为真才会执行相应的代码块
print('yes')
print('ok')
if 'to' not in s1:
print('True')
if -0.0:
print('任何值为0的数字都是假')
if 10:
print('非0数字为真')
if ' ':
print('空格字符也是一个字符,为真')
if '':
print('字符串长度为0,为假')
if [10, 20]:
print('非空列表,为真')
if (10, 20):
print('非空元组,为真')
if {}:
print('空字典,为假')
if None: # None是关键字,相当于其他语言中的null,表示真空
print('None也为假')
if not 0:
print('0为假,取反为真')
三元运算符
也叫条件表达式
>>> a = 10
>>> b = 20
>>> if a < b:
... s1 = a
... else:
... s1 = b
...
>>> s1
10
# 以上写法,可以简化为
>>> s2 = a if a < b else b
>>> s2
10
- getpass模块之getpass函数
cat login.py
#!/usr/local/bin/python3
import getpass #导入getpass模块
username = input('please input username:')
userpass = getpass.getpass('please input userpass:')
if username == 'bob' and userpass == '123456':
print('Login successful')
else:
print('Login inorrect')
- random模块之choice
>>> random.choice('abc')
a
>>> random.choice(['aaa','bbb','ccc']) #也可以是元组,(())
bbb
剪刀石头布小游戏
import random
# 定义人胜利的情况
win_list = [['石头', '剪刀'], ['剪刀', '布'], ['布', '石头']]
# 计算机随机选择
xuanxiang = ['石头', '剪刀', '布']
computer = random.choice(xuanxiang)
# 获取用户的输入
prompt = '''(0) 石头
(1) 剪刀
(2) 布
请选择(0/1/2): '''
i = int(input(prompt)) # 将用户的输入转为数字
player = xuanxiang[i] # 在列表中选择下标对应的字符串
# 输出人机的选择
print('您: %s, 计算机: %s' % (player, computer))
# 判断胜负
if player == computer:
print('\033[32;1m平局\033[0m')
elif [player, computer] in win_list:
print('\033[31;1mYou WIN!!!\033[0m')
else:
print('\033[31;1mYou LOSE!!!\033[0m')
- print 颜色
在shell里,需要加-e
需要echo -e ‘*****’\033[32;43;1m***\033[0m
\033[字颜色30多;字背景40多;文字类型m ***\033[0m
0m代表关闭颜色
循环
- 如果循环次数未知,推荐使用while循环
- 如果循环次数已知,推荐使用for循环
while循环
语法:
while 条件:
如果条件为真,执行的语句块
break语句
循环一旦遇到break,就结束了。break后面的,在循环体内的代码也不再执行。
continue语句
- break语句,结束循环,程序继续执行循环后面的代码
- continue语句,结束本次循环,但是不终结循环
- 循环一旦遇到continue语句,将不再执行continue后面的代码,而回到判断条件处
,如果条件为真,则继续循环
else语句
- 在python中,循环也有else,当循环正常结束(循环条件不满足,导致循环结束)
,else语句执行;如果循环被break中断,else语句将不再执行。
猜1-100数字
# 猜数程序,7次机会,猜对不用输出正确答案;7次全错,输出正确答案
import random
num = random.randint(1, 100)
i = 0
while i < 7:
answer = int(input('guess: '))
if answer == num:
print('猜对了')
break
elif answer > num:
print('猜大了')
else:
print('猜小了')
i += 1
else: # 当循环被break,else不执行,否则执行
print('答案是: %s' % num)
range函数
range函数潜在可以产生很多数字,但是不会立即生成,当向range取值时,它会生成一个。
range经常与for循环结合使用。
>>> range(10)
range(0, 10)
>>> for i in range(10):
... print(i)
>>> list(range(10)) # 10是结束数字,产生的数字不包含结束数字。起始数字默>认从0开始
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(6, 10)) # 起始数字是6
[6, 7, 8, 9]
>>> list(range(1, 10, 2)) # 2是步长值
[1, 3, 5, 7, 9]
>>> list(range(10, 0, -1))
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
列表解析
也叫列表推导,用于生成列表
>>> [10] # 直接将数字放到列表中
[10]
>>> [5 + 5] # 将表达式的计算结果放到列表中
[10]
>>> [5 + 5 for i in range(10)] # 表达式计算10遍
[10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
>>> [5 + i for i in range(1, 11) # 表达式可以使用for的变量]
[6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
>>> [5 + i for i in range(10) if i % 2 == 1] # 满足判断条件时,才计算表达
式
[6, 8, 10, 12, 14]
# 生成192.168.1.0网段中的所有地址
>>> ['192.168.1.%s' % i for i in range(1, 255)]
- 输出前八位斐波那契数列
1、1、2、3、5、8、13、21…
fib = [1,1]
for i in range(8):
fib.append(fib[-1] + fib[-2])
print(fib)
- 乘法表
#!/usr/local/bin/python3
for n in range(1,10):
for m in range(1, n+1):
num=n*m
print('%s*%s=%s'%(m,n,num),end=' ')
print()
得到
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
- 冒泡排序
#!/usr/local/bin/python3
s1=[0,1,2,3,4,5,6,7,8,9]
import random
for i in range(10):
s1[i] = random.randint(1,100)
print(s1)
#i = 1
#while i <= 9:
for i in range(9):
for j in range(9-i):
if s1[j] > s1[j+1]:
a = s1[j]
s1[j] = s1[j+1]
s1[j+1] = a
# i +=1
print(s1)
得到
[15, 82, 42, 8, 37, 30, 70, 31, 49, 22]
[8, 15, 22, 30, 31, 37, 42, 49, 70, 82]