Python学习-----流程控制3.0(习题实操)

2023-11-01

目录

前言:

1.求和

2.求阶乘

3.输出100以内的奇数

4.打印九九乘法表

5.斐波那契数列

6.打印空心矩形

 7.打印三角形

8.求两个数字之间的最大公约数

9.质数问题

10. 进制数转换

11.字符统计

12.字符匹配问题

13.求两个数字之间最小公倍数

14.猜数字游戏


前言:

        前面两期讲了Python中的流程控制条件结构和循环结构,这一期我打算通过练习题的形式来做个巩固和复习,话不多说直接上题目!!!

Python学习-----流程控制1.0(选择结构-->if elif else语句、缩进法则)_守约斯维奇的博客-CSDN博客

Python学习-----流程控制2.0(循环结构-->while循环、for循环、range()函数)_守约斯维奇的博客-CSDN博客 

1.求和

输入一个数字n,输出1+2+3+4+5+……+n 的结果

n=int(input('输入你求和的数字:'))
sum=0
for i in range(n+1):
    sum+=i
print(sum)

 非常简单,不用多说什么了,直接下一题

2.求阶乘

输入一个数字n,然后输出这个数字的阶乘

比如输入5,输出5x4x3x2x1的结果

n=int(input('输入:'))
sum=1
for i in range(1,n+1):
    sum*=i
print(sum)

同样也是非常简单,不过range()要从1开始哦!!!,如果直接从默认值0开始,那么阶乘的结果都是0,因为0参与了乘法

3.输出100以内的奇数

用Python输出100内的奇数

for i in range(1,101,2):
    print(i)

两行就搞定了,不讲,接着下一题

4.打印九九乘法表

用Python去打印输出九九乘法表

# 九九乘法表

#1.(while循环嵌套)
a=9
i=1
while i<=a:
    j = 1
    while j<=i:

        j+=1
    i += 1
    print('\n')
    

# 2.(for循环嵌套)
# for i in range(1,10):
#     for j in range(1,i+1):
#         print(f'{j}*{i}={i * j}', end=' ')
#     print('\n')


# 3.(while与for嵌套)
# i=1
# while i<=9:
#     for j in range(1,i+1):
#         print(f'{j}*{i}={i * j}', end=' ')
#     i+=1
#     print('\n')


# 4.(for与while嵌套)
# for i in range(1,10):
#     j=1
#     while j<=i:
#         print(f'{j}*{i}={i * j}', end=' ')
#         j+=1
#     print('\n')

这里我直接提供了4种循环嵌套方法,你们可以自己选择,不过也是非常简单,就不多说了

5.斐波那契数列

输入一个数字n,然后输出第n个斐波那契数的值

n=int(input('请输入:'))
a=1
b=1
for i in range(n):
    c=a+b
    a=b
    b=c
print(a)

 我们知道斐波那契数列是1 1 2 3 5 8……所以我们要提前初始化最开始的两个数字,然后就根据斐波那契数列的规律:后面一个数字等于前面的两个数字相加。然后就把a,b,c依次向后移动,直到我们想要的第n个斐波那契数

6.打印空心矩形

输入数字n,打印n*n的空心矩形

比如输入:4

输出:

****
*  *
*  *
****

n=int(input("请输入:"))
for i in range(n):
    for j in range(n):
        if i==0 or i==n-1 or j==0 or j==n-1:
            print('*',end='')
        else:
            print(' ',end='')
    print()

如果要想打印空心矩形的话,我们这里要用到选择结构去判断,前面讲了循环的嵌套是按照先横后纵去打印的,所以我们这里需要去判断,如果是在第一行或者第一列或者最后一行或者最后一列的时候就要进行打印,也就是打印边框,如果是中间行或者中间列的话就打印空格来填补位置

 7.打印三角形

输入一个数字n,打印相对应的三角形(等边三角形)

输入:4

输出:

    *

   ***

  *****

 *******

k=int(input("enter:"))
i=0
while i<k:
    for j in range(k,i,-1):
        print(' ',end='')
    for h in range(0,i*2+1):
        print('*',end='')
    i+=1
    print('\n')

三角形相对矩形的话就比较灵活了,其实多去练习就会了,可以去试着打印不同类型的三角形

8.求两个数字之间的最大公约数

输入数字a,b,然后输出a和b之间的最大公约数

比如输入:18   12

输出:6

a=int(input('num1:'))
b=int(input('num2:'))
while b:
    c=a%b
    a=b
    b=c
print(a)

这个是非常经典的辗转求余法,就是把这两个数字不断进行求余数。引入一个c作为余数,然后把上一次循环b的值赋给a,c赋值给b,得到新的a和b的值,再次求余数,直到b为0就结束

9.质数问题

输出100以内的全部质数

i=2
while i<=100:
    judge=True
    for j in range(2,i):
        if i%j==0:
            judge=False
            break
    if judge:
        print(i,end=' ')
    i+=1

质数:一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。

        所以我们,先去判断这个数字是不是质数,也就是把这个数字求余到比这个数字小的所有数字,如果结果不为0,那么这个就是质数,然后输出就行了

10. 进制数转换

输入一个十进制数,输出这个数字的二进制数

n=int(input('输入:'))
a=[]
k=0
while n:
   a.insert(0,n%2)
   n=int(n/2)
   k+=1
for i in range(k):
    print(a[i],end='')

进制数之间是有转换规则的,十进制转二进制是把这个十进制数对2求余,然后再除2取整,就这样一直重复下去,直到被除数为0,就完成了转换。详细讲解链接进制转换(计数方法)_360百科

 不过这里我是用了一个列表来存储转换好了之后的二进制数字,每次生成了一个二进制数我会把这个数字插入到列表的第一位,这样到时候输出就直接按顺序输出就行了

11.字符统计

输入一个字符串,统计其中的字母、数字、空格、以及其他字符的个数,并且输出结果

示例:

输入:wda123 8 **@@

输出:字母:3个,数字4个,空格2个,其他4个

str1=input('输入:')
a=0
b=0
c=0
d=0
i=0
length=len(str1)
while i<length:
    if 'a'<=str1[i]<='z' or 'A'<=str1[1]<='Z':
        a+=1
    elif '0'<=str1[i]<='9':
        b+=1
    elif str1[i]==' ':
        c+=1
    else:
        d+=1
    i+=1
print(f'字母:{a}个,数字:{b}个、空格:{c}个、其他:{d}个')

其实这个统计并不难,运用好循环与条件语句就行了,如果满足条件就加一 

12.字符匹配问题

输入一个含有小括号(英文的括号)的字符串,输出括号是否匹配(数量和方向都要相匹配)

示例:

输入:(79998(4wad))

输出:不匹配

输入:)wda77)w**asd(wda(

输出:不匹配

输入:(ada)()w(wq)

输出:匹配

str1=input('输入:')
num=0
i=0
li=[]
length=len(str1)
while i<length:
    if str1[i]=='(':
        li.append(str1[i])
        num+=1
    elif str1[i]==')':
        li.append(str1[i])
        num-=1
    i+=1
if num!=0:
    print('不匹配')
else:
    a=len(li)
    j=0
    while j<len(li)-1:
        if li[j+1]==')' and li[j]=='(':
            a=a-2
        j+=1
    if a==0:
        print('匹配')
    else:
        print('不匹配')

        这里是巧妙地运用选择语句,首先初始化num=0,然后去统计( 和 ) 之间的数量, 如果出现一次 ( num+1,如果出现一次 ) num-1,如果最后num等于0的话,说明括号上数量是相匹配的;然后就要进一步去进行位置匹配验证,把前面读取到的括号 '(' 和 ')' 依次按照位置存到空列表中,调用len()函数来统计括号的总个数a,下面通过循环去进行位置匹配,如果列表前面的一个括号是‘)’那么后面的一个括号如果是'(' 的话就把a-2,说明已经位置匹配成功了一对了,以此类推,直到a==0的时候,这说明位置匹配也是成功,最终结果是成功的,否则就匹配失败

13.求两个数字之间最小公倍数

 输入数字a,b,然后输出这两个数字之间最小公倍数

a=int(input('num1:'))
b=int(input('num2:'))
i=1
while i*a%b:
    i+=1
c=i*a
print('最小公倍数为%d'%c)

  求两个数字之间最小公倍数是通过倍数求余法,把其中的一个数字依次与1,2,3,4……相乘然后求余给另一个数,如果出现余数为0的话,那么就出现了最小公倍数,输出结果就行了 

14.猜数字游戏

这里涉及到随机数问题,可以看看下面的链接,详细讲解了Python中的随机数

Python学习-----随机数篇_守约斯维奇的博客-CSDN博客

猜数字游戏,随机产生一个1-100的整数,玩家从键盘输入一个数字,如果与随机产生的数字相同就胜利.

要求如下:

1,猜错后要提示玩家,猜的数字比实际数字大或者小,并提示数字以及最新的范围(比如:随机数是10,玩家猜的是20则提示比20小,请输入1-20之间的数字,然后又输入5,则提示比5大,请输入5-20的数字.....)

2.猜对后提示正确,并输出共才了多少次

import random as r
a=r.randint(1,100)
max=100
min=0
count=0
while True:
    user=int(input('输入你的数字:'))
    if user==a:
        count += 1
        print('congratulation!你一共猜了%d次'%count)
        break
    elif user>a:
        print('猜大了')
        count+=1
        if max>user:
            max=user
        print(f'新的数字范围{min}~{max}')
    elif user<a:
        count += 1
        print('猜小了')
        if min<user:
            min=user
        print(f'新的数字范围{min}~{max}')

好了,这一期就到这里了,兄弟们学会了吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python学习-----流程控制3.0(习题实操) 的相关文章

随机推荐

  • spdlog和fork冲突问题

    遇到个问题 使用spdlog的async logger打印日志 一直都是正常的 但是调用了fork之后就不打印了 先使用打印TODO大法 使用的spdlog的default logger打印 走的console打印 结果发现console打
  • win10 WSL2 Docker 与 Linux Docker

    项目场景 项目场景 用win10 wsl2 docker开发使用GPU tensorflow onnx TensorRT 的镜像 然后部署到Linux生产环境进行使用 发现不识别cuda驱动 问题描述 在Linux上运行wsl2 save
  • 优化算法基本原理

    优化算法基本原理 机器学习就两个问题 一个是model的定义 一个就是如何优化 model是战略 优化则是执行 在Caffe现在的版本中 主要使用了三种优化算法SGD AdaGrad 以及NAG 这三种算法快速 高效 缺点就是极容易收敛到局
  • iOS架构-组件化(项目实战-项目首页架构)

    UI架构设计 设计模式 外观模式 代理模式 适配器模式 adapter 注意 一版本只是搭建结构 一 1 0 Tab搭建 二 1 1 新增UICollectionView 主页 gt 整体设计基于 gt UICollectionView 滑
  • protobuf介绍和语法

    目录 前言 语法 标识符 字段 字段类型 proto2和proto3区别 前言 Protobuf即Protocol Buffers 是Google公司开发的一种跨语言和平台的序列化数据结构的方式 是一个灵活的 高效的用于序列化数据的协议 与
  • 用CSS实现宽度自适应100%,宽高比例为16: 9的矩形

    宽度自适应100 宽高比为16 9 即100 h 16 9 计算出来矩形高度 h 56 25 父元素设置height 0 padding bottom 56 25 是为了让子元素适应父元素的高度 子元素高度 父元素的 padding bot
  • python 崇天_python 从入门到放弃-----认识python的过程

    因为初来匝道 这样子写不知道会不会有问题 这里我先写下来 后期如果有问题 再修改 这里只记录一个小渣渣的学习过程和总结 中途学习爬虫也断断续续 还在继续努力中 但也总结自己的一些个人经验 1 零基础学习爬虫 还是要学python和HTML的
  • 2023年第二届服务机器人国际会议(ICoSR 2023)

    会议简介 Brief Introduction 2023年第二届服务机器人国际会议 ICoSR 2023 会议时间 2023年7月21日 23日 召开地点 中国 上海 大会官网 www iwosr org ICoSR 2023将围绕 服务机
  • Clang 新手教程来啦!

    长话短说 这篇新手教程会让你弄清楚什么是clang clang AST clang plugins 和clang tools 等等 让你大概知道clang 可以解决什么问题 而且小白也是可以用clang libraries 来开发工具的 0
  • 微信小程序前端引入weui组件库

    正在开发的微信小程序 想使用weui组件库 步骤如下 基础 1 小程序开发工具 1 06 22 1 初始化 以管理员身份运行命令行窗口 cmd 或使用VSCode进入终端 在cmd中进入项目的根目录 然后输入以下命令 npm init 后面
  • 2020新版去水印小程序搭建详细教程

    可以设置小程序跳转 引流也不错 支持小程序后台流量主激励视频广告 用户下载一次观看一次视频广告 收入非常可观 支持小程序后台流量主banner广告 支持全网短视频解析 苹果安卓通用 支持后台无限生成卡密 支持自定义文字广告 支持图片广告 支
  • amazon-kinesis-video-streams-webrtc-sdk-c 移植到linux开发板

    大部分参考这位大神的资料 分析依赖关系 通过分析Cmakelist txt得出了一些依赖关系 libkvsWebrtcClient so 依赖项如下 libkvspicUtils a libkvspicState a libssl so l
  • 如何写好一份PPT

    写工作汇报PPT 核心是 要让领导一眼看懂你做的汇报 PPT 本着这个原则 这里老秦提供4种解决方案 PowerPoint的核心作用是什么 Power your Point PPT 的第一目的是沟通和传达 它是架在讲者和听者之间的桥梁 辅助
  • 数字IC-序列检测-fsm

    序列检测简介及代码实现 序列检测器包含两种 一种是移位寄存器 另一种时状态机 还有重复序列和不重复序列检测 重点关注和了解如何用状态机去实现 序列检测器就是将指定的序列从数字码流 中检测出来 收到输出1 否则输出0 移位寄存器解法 重复序列
  • 教你如何安装SCSI硬盘 安装、启动、设置篇

    SCSI硬盘一向认为是昂贵且高不可攀的存储设备 不仅本身价位高于IDE硬盘很多 而且必须另外选择SCSI接口卡 因此在这样的条件下 一般计算机用户便倾向于使用IDE接口的硬盘 IDE硬盘虽然具有低价的优势 但始终敌不过SCSI硬盘的强悍速度
  • python算法中的深度学习算法之强化学习(详解)

    目录 学习目标 学习内容 强化学习 环境建模 Markov决策过程
  • C++11 -- 入门基础知识

    文章目录 C 11简介 列表初始化 std initializer list 变量类型推导 nullptr 范围for循环 STL中的一些变化 C 11简介 在2003年C 标准委员会曾经提交了一份技术勘误表 简称TC1 使得C 03这个名
  • uniapp+vue3+vite+ts+uviewPlus搭建项目

    创建项目架构 首先使用官方提供的脚手架创建一个项目 这里我创建的 vue3 vite ts 的项目 npx degit dcloudio uni preset vue vite ts project name 如命令行创建失败 请直接访问
  • python selenium启动常用

    加载超时设置 browser set page load timeout 5 二进制转16进制 a 00000000 hex int a 2 from selenium import webdriver import time from s
  • Python学习-----流程控制3.0(习题实操)

    目录 前言 1 求和 2 求阶乘 3 输出100以内的奇数 4 打印九九乘法表 5 斐波那契数列 6 打印空心矩形 7 打印三角形 8 求两个数字之间的最大公约数 9 质数问题 10 进制数转换 11 字符统计 12 字符匹配问题 13 求