python:判断,循环基础

判断语句

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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值