• python_base_day005


    while/for循环用法

    while循环

    用法1:

    while 条件:
    	代码块
    

    用法2:

    while 条件:
    	代码块
    else:
    	不满足条件时,执行的代码块
    

    例如:

    i = 0
    while i < 3:
        print(i)
        i += 1
    else:
    	print('此时 i 的值为 %d ,已经不满足条件了' % i)
    

    结果是:

    0
    1
    2
    此时 i 的值为 3 ,已经不满足条件了
    

    for循环

    用法1:

    for 条件:
    	代码块
    

    用法2:

    for 条件:
        代码块
    else:
        不满足条件时执行的代码
    

    例如:

    for i in range(3):
    	print(i)
    	i += 1
    else:
    	print('此时 i 的值为 %d ,已经不满足条件了' % i)
    

    结果是:

    0
    1
    2
    此时 i 的值为 3 ,已经不满足条件了
    

    循环关键字 break/continue

    break作用:停止当前循环

    例如:

    i = 0
    while i < 10:
    	if i == 5:
    		break
        else:
    		print(i)
    		i += 1
    

    结果是:

    0
    1
    2
    3
    4
    

    continue作用:停止本次循环continue关键字之后的执行

    例如:

    i = 0
    while i < 5:
        if i == 3:
    	    i += 1
    	    continue
        print(i)
        i += 1
    

    结果是:

    0
    1
    2
    4
    

    练习

    1、打印九九乘法表

    for m in range(1, 10):
    	for n in range(1, m + 1):
    		print('%d*%d=%d' % (n, m, m * n), 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 
    

    2、一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?

    s = 0
    h = 100.00
    for i in range(10):
    	if i == 0:
    		s += 100
    		print('第 1 次落地经过的距离为:%.2f' % s)
    	else:
    		s += h
    		h /= 2
    		print('第 %d 次落地经过的距离为:%.2f' % (i + 1, s))
    # 结果是:
    第 1 次落地经过的距离为:100.00
    第 2 次落地经过的距离为:200.00
    第 3 次落地经过的距离为:250.00
    第 4 次落地经过的距离为:275.00
    第 5 次落地经过的距离为:287.50
    第 6 次落地经过的距离为:293.75
    第 7 次落地经过的距离为:296.88
    第 8 次落地经过的距离为:298.44
    第 9 次落地经过的距离为:299.22
    第 10 次落地经过的距离为:299.61
    

    3、猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
    以后每天早上都吃了前一天剩下的一半 在加一个。到第10天早上想再吃时,见只剩下一个桃子了。
    请通过一段通过代码来计算第一天摘了多少个桃子?

    n = 1
    i = 0
    while i < 10:
    	if i == 0:
    		n = 1
    		print(f'第 {10 - i} 天的桃子个数为:%d' % n)
    	else:
    		n = (n + 1) * 2
    		print(f'第 {10 - i} 天的桃子个数为:%d' % n)
    	i += 1
    #  结果为:
    第 10 天的桃子个数为:1
    第 9 天的桃子个数为:4
    第 8 天的桃子个数为:10
    第 7 天的桃子个数为:22
    第 6 天的桃子个数为:46
    第 5 天的桃子个数为:94
    第 4 天的桃子个数为:190
    第 3 天的桃子个数为:382
    第 2 天的桃子个数为:766
    第 1 天的桃子个数为:1534
    

    4、剪刀石头布游戏

    import random
    d = {1:'石头', 2:'剪刀',3:'布'}
    print('------   石头剪刀布游戏开始   --------
    请按下面提示出拳:')
    while True:
    	print('石头【1】 剪刀【2】 布【3】 退出【4】')
    	num = int(input('请输入你的选项:'))
    	if 4 == num:break
    	random_num = random.randint(1,3)
    	if num == random_num:
    		res = '平局'
    	elif random_num - 1 == num or random_num + 2 == num:
    		res = '您赢了!'
    	else:
    		res = '您输了!'
    	print('您的出拳为:%s,电脑出拳为:%s,%s' %(d[num],d[random_num],res))
    #  结果为:
    ------   石头剪刀布游戏开始   --------
    请按下面提示出拳:
    石头【1】 剪刀【2】 布【3】 退出【4】
    请输入你的选项:1
    您的出拳为:石头,电脑出拳为:石头,平局
    石头【1】 剪刀【2】 布【3】 退出【4】
    请输入你的选项:2
    您的出拳为:剪刀,电脑出拳为:剪刀,平局
    石头【1】 剪刀【2】 布【3】 退出【4】
    请输入你的选项:3
    您的出拳为:布,电脑出拳为:剪刀,您输了!
    石头【1】 剪刀【2】 布【3】 退出【4】
    请输入你的选项:1
    您的出拳为:石头,电脑出拳为:剪刀,您赢了!
    石头【1】 剪刀【2】 布【3】 退出【4】
    请输入你的选项:4
    

    5、冒泡排序

    l = [3, 2, 5, 2, 5, 7, 4, 8, 3, 9, 11, 25, 2, 8]
    while True:
    	n = 0
    	for i in range(len(l)):
    		# 一轮比较结束,重新开始
    		if len(l) - 1 == i: break
    		if l[i] > l[i + 1]:
    			# 比较大小,交换位置
    			l[i], l[i + 1] = l[i + 1], l[i]
    			print(l)
    		else:
    			n += 1
    			continue
    	# 所有比较未调整位置,则退出
    	if len(l) - 1 == n: break
    
    #  结果为:
    [2, 3, 7, 4, 8, 3, 11, 25, 2]
    [2, 3, 4, 7, 8, 3, 11, 25, 2]
    [2, 3, 4, 7, 3, 8, 11, 25, 2]
    [2, 3, 4, 7, 3, 8, 11, 2, 25]
    [2, 3, 4, 3, 7, 8, 11, 2, 25]
    [2, 3, 4, 3, 7, 8, 2, 11, 25]
    [2, 3, 3, 4, 7, 8, 2, 11, 25]
    [2, 3, 3, 4, 7, 2, 8, 11, 25]
    [2, 3, 3, 4, 2, 7, 8, 11, 25]
    [2, 3, 3, 2, 4, 7, 8, 11, 25]
    [2, 3, 2, 3, 4, 7, 8, 11, 25]
    [2, 2, 3, 3, 4, 7, 8, 11, 25]
    

    6、斐波纳挈

    n = int((input('请输入一个整数(返回斐波那契数列的前n个数):')))
    l = []
    i = 0
    while i <= n:
    	if i == 0:
    		# 为零不输出
    		i += 1
    		continue
    	elif i <= 3:
    		# 前三个数确定下来
    		l = [1, 1, 2][:i]
    	else:
    		l.append(l[i - 2] + l[i - 3])
    	i += 1
    print(l)
    
    #  结果为:
    请输入一个整数(返回斐波那契数列的前n个数):11
    [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
    

    7、有1 2 3 4 这四个数字,设计程序计算能组成多少个互不相同且无重复数字的3位数?分别是什么?

    l = [1, 2, 3, 4]
    total = 0
    res = []
    for o in l:
    	for p in l:
    		for q in l:
    			if o != p and p != q and o != q:
    				res.append('%d%d%d' % (o, p, q))
    				total += 1
    print('统共有%d组,他们是:' % total)
    print(res)
    
    #  结果是:
    统共有24组,他们是:
    ['123', '124', '132', '134', '142', '143', '213', '214', '231', '234', '241', '243', '312', '314', '321', '324', '341', '342', '412', '413', '421', '423', '431', '432']
    

    8、通过函数实现一个计算器,运行程序分别提示用户输入数字1,数字2,然后再提示用户选择 :加【1】 减【2】 乘【3】 除【4】,根据不同的选择完成不同的计算 ,然后返回结果。

    def calc(x, y, z):
        d = {1: x + y, 2: x - y, 3: x * y, 4: x / y}
        return '结果是:'+str(d.get(int(z)))
    
    
    if __name__ == '__main__':
        a = float(input('请输入第一个数:'))
        b = float(input('请输入第二个数:'))
        c = input('请选择:加【1】,减【2】,乘【3】,除【4】')
        print(calc(a, b, c))
    #  结果是:
    请输入第一个数:2
    请输入第二个数:5
    请选择:加【1】,减【2】,乘【3】,除【4】3
    结果是:10.0
    
    这里没有使用if来判断输入运算符,而是直接使用字典保存了计算逻辑。不过这里有个不符合规范的问题:字典的key不建议使用数值类型(此处只是为了符合题意)。当然,还可以这么玩来容错:
    def calc(x, y, z):
        d = {'1': x + y, '2': x - y, '3': x * y, '4': x / y}
    	return '结果是:' + str(d.get(z, '运算符输出错误!'))
    
    #  结果为:
    请输入第一个数:2
    请输入第二个数:4
    请选择:加【1】,减【2】,乘【3】,除【4】+
    结果是:运算符输出错误!
    

    9、实现一个注册的流程的函数,调用函数就执行下面要求功能

    基本要求:

    1、运行程序,提示用户,输入用户名,输入密码,再次确认密码。

    2、判读用户名有没有被注册过,如果用户名被注册过了,那么打印结果该用户名已经被注册。

    3、用户名没有被注册过,则判断两次输入的密码是否一致,一致的话则注册成功,否则给出对应的提示。

    def get_user(name):
    	'''
    	:param name:根据传入的用户名判断是否已注册 
    	:return: 已注册返回True,否则返回False
    	'''
    	d = ['张三', '李四', '王五']
    	return True if name in d else False
    
    
    def check_passwd(pwd, confirm_pwd):
    	'''
    	:param pwd:密码 
    	:param confirm_pwd:二次密码 
    	:return: 两次密码相同返回T,否则返回F
    	'''
    	return True if pwd == confirm_pwd else False
    
    
    def reg():
    	user_name = input('请输入用户名:')
    	passwd = input('请输入密码:')
    	confirm_passwd = input('请再次输入密码:')
    	if get_user(user_name):
    		print('很抱歉,该用户名已经被注册~')
    	elif check_passwd(passwd, confirm_passwd):
    		# 此处可以吧用户信息加入用户列表d中
    		print('注册成功')
    	else:
    		print('密码不一致,请重新输入~')
    
    
    if __name__ == '__main__':
    	    reg()
    #  结果为:
    请输入用户名:哈哈
    请输入密码:123456
    请再次输入密码:123456
    注册成功
    ------------------
    请输入用户名:张三
    请输入密码:123
    请再次输入密码:123
    很抱歉,该用户名已经被注册~
  • 相关阅读:
    【数据分析&数据挖掘】拉格朗日插值法
    【数据分析&数据挖掘】异常值的判断与去除——3σ & 箱线图分析
    集腋成裘-13-git使用-02进阶篇
    饮冰三年-人工智能-Python-30 python开发中常见的错误
    饮冰三年-人工智能-Python-31博客园山寨版
    集腋成裘-12-git使用-01创建库
    饮冰三年-人工智能-Python-27 Django Form组件
    饮冰三年-人工智能-Python-29瀑布流
    饮冰三年-人工智能-Python-28 企业官网(组合搜索)
    使用ExtJs建一个后台界面框架
  • 原文地址:https://www.cnblogs.com/wjlv/p/12159056.html
Copyright © 2020-2023  润新知