python例题(while、for循环的典型例题 一)

一、先了解一些python内部模块:

     1、生成随机数(随机参数):

               (1)利用集合set可变的的性质转化为随机的列表。

set1 = {1,2,3,4,'a'}
list1 = list(set1)  # set是可迭代的,每次for遍历结果顺序不一样。
print(list1[0])     # 随机参数产生。

               (2)利用random模块来生成:

                        详情见 while 语句文章。

二、比较典行的例题:

      1、程序判断四个数的最大值:

         #  一定要搞清楚 if elif else 语句(满足一个,退出条件,不执行其他所有条件代码) 与 同级 并列 if 的区别。


a = int(input('请输入数字1:'))
b = int(input('请输入数字1:'))
c = int(input('请输入数字1:'))
d = int(input('请输入数字1:'))

max = 0
if a > b:
    max = a
else:
    max = b
if c > max:
    max = c
if d > max  :
    print('输出最大值是:',d)
else:
    print(max)

        2、 打印图形:

                           1、方法:一层一层分析,先里后外,寻找循环次数与打印图形的关系。

                  

                       

i = 5
for j in range(1, 14, 2):  # 设置步长为2
    if j <= 7:
        print(('*' * j).center(20))   # 利用str.center方法居中
    else:
        print(('*' * i).center(20))

        if i == 1:                      #  这个位置可以整合为双for循环
            break
        i -= 2
          

               2、绝对值的妙用: 

                                       

                代码:


for i in range(-6,7):
    for j in range(-6,7):
        if abs(i) + abs(j) == 6:      #  
            print('*',end='')
        else:
            print(' ', end='')
    print()

            提示  : 双重循环的变种。

       3、与电脑的猜拳游戏(用到random模块):

           (1)第一种:穷举法(多层循环嵌套):即  (玩家 3  *   电脑 3):

            (2)分类解决: 

                              

#  第一种:
import random
list1 = ['石头','剪刀','布']
tag = 1                             
while tag :                            #  标签,比break,continue灵活。
    people = input('请输入石头、剪刀、布:\n')
    computer = random.choice(list1)   #  生成随机参数
    if people == computer:
        print('平局,再来!')


            #  这种 相等 的多个逻辑判断可以用 : in  列表   的方式,如第二种方法:

    elif (people == '石头' and computer == '剪刀') or (people == '剪刀' and computer == '布') or \(people == '布' and computer == '石头') :



        print('你赢了,恭喜!!!!!!!!!!')
        tag = 0
    else:
        print('你输了,哈哈哈哈!')


 
               #   第二种方法:

import random
list1 = ['石头','剪刀','布']
tag = 1
while tag :
    people = input('请输入石头、剪刀、布:\n')
    computer = random.choice(list1)
    list2 = [['石头','剪刀'],['剪刀','布'],['布','石头']]   #  定义了判断列表
    if people == computer:       
        print('平局,再来!')


            

    elif [people,computer] in list2:        #  in 的方式简单判断。
        print('%s赢了%s' %(people,computer))


        print('你赢了,恭喜!!!!!!!!!!')
        tag = 0
    else:
        print('你输了,哈哈哈哈!')
 

       4、100元 买 鸡的问题

                            

             (1)穷举法的典型例题(穷举法往往使用多层循环):

               #         买 小鸡问题 (穷举法用的是多层循环!)
x = 0
while x <= 100:                    # 穷举公鸡的数量
    y = 0
    while y <= 100:                 # 穷举母鸡的数量
        z = 0
        while z <= 100:            # 穷举小鸡的数量
            if (x + y + z == 100) and (5*x + 3*y + z/3 == 100):    # python3 除法有余数,所以不用考虑小数点。
                print(x,y,z)
            z += 1
        y += 1
    x += 1


         #方法二: for
for x in range(0,21):
    for y in range(0,34):
        z = 100 - x - y       # 减少重复项
        if  5*x+3*y+z/3==100:
            print(x,y,z)

 五、 for循环、换行、print( , end=' ')用法:

            题目:     输入一个数值,输出从1到这个数的所有奇数,并且每隔10个数换一行

num = input('请输入数字:\n')
m = 0
for i in range(1,int(num) + 1,2):
    if m % 10 !=  0 or m == 0:
        print(i,end=' ')
        m += 1

    else:
        m += 1             #  易错点,m变化不要忘记  i 会自动加1
        print()

六、双for循环找出规律:

               题目: 使用for循环如何实现99乘法表

             #   第一种
for i in range(1,10):
    for j in range(1,11):
        if i >= j:
            if j <= 9:
                print('%d X %d = %d' %(i,j,i*j),end='  ')
            elif j == 9:
                print()
        else:
            print()
            break    
                  
                  #第二种:
#2. 使用for循环如何实现99乘法表
for i in range(1,10):
    for j in range(1,i+1):
        print('%d*%d=%d'%(i,j,i*j),end=' ')
    print()
       

七、n*n 列表矩阵问题:

               题目1:

                

              代码:

m = [[1,2,3],
    [4,5,6],       
    [7,8,9]]
n = [[2,2,2], 
    [3,3,3],
    [4,4,4]] 


# 列表解析:
list1 = [m[i][j]*n[i][j] for i in range(0,3) for j in range(0,3)]
# for 循环
for i in range(0,3):
    for j in range(0,3):
        print(m[i][j]*n[i][j])

             题目2:

                                  

                N * N  双层矩阵,注意其  下标的关系:    0.0  0.1  0.2
                                                      1.0  1.1  1.3
                                                      2.0  2.1  2.2   注意前后 和差 绝对值得规律。
#
# m = [[1,2,3],[11,22,33],[111,222,333]]

                     #第一道:
# list1 = [m[i][j] for i in range(0,3) for j in range(0,3) if i == j or abs(i - j) == 2]
# print(sum(list1))

                    # 第二道
# list2 = [m[i][j] for i in range(0,3) for j in range(0,3) if i == j == 1 or abs(i - j) == 2]
# list3 = [m[i][j] for i in range(0,3) for j in range(0,3) if i == j]
# print(sum(list2),sum(list3))

八、输入一个整数,将整数分解为质因数的积:

            (例:90》》    2*3*3*5 = 90)

               质因数:1、因数   2、除了 1 和本身没有其他的因数。

1、数学方法:

                        

2、代码:

num = int(input('请输入数字:\n'))
for i in range(2,num + 1):  # 从最小质数2开始,  前闭后开 >>> num+1
    while True:
        if num % i == 0:
            print(i)
            num = num/i         # 商
        else:
            break

九、冒泡排序法:

             像冒泡一样,多层循环,每循环一次将最大值放在最右边

代码:

list1 = [4,3,5,8,10,2,89,1]
for j in range(1,len(list1)):       #注意前闭后开(取值为1、2、3 .. 7)#  确定循环次数。
    for i in range(0,len(list1)-1):    #  确定长度,遍历索引,   #  将最大放在最右边。
        if list1[i] < list1[i + 1]:
            pass
        else:
            list1[i + 1],list1[i] = list1[i],list1[i+1]   #  交换
print(list1)

十、列表的分割(for循环、切片、append、索引糅合):

            题目:   要求不定长的列表分割。

                   

           代码:

                          #

猜你喜欢

转载自blog.csdn.net/qq_16555103/article/details/83785422
今日推荐