Python 入门必备-编程逻辑判断及案例练习|学习笔记

简介: 快速学习 Python 入门必备-编程逻辑判断及案例练习

开发者学堂课程Python 开发基础入门Python 入门必备-编程逻辑判断及案例练习】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/556/detail/7651


Python 入门必备-编程逻辑判断及案例练习


目录:

一、练习题

二、解决习题一

三、解决习题二


一、练习题

Ø输入2个数字,输出最大数

Ø给定一个不超过5位数的正整数,判断其几位

 

二、解决习题一

先来看第一题,题目说输入两个数字,然后输出最大的数。

现阶段只允许用if判断语句来完成以上事情,当然也可以用函数,比如说max函数判断谁最大。但max函数是以后才能用的。必须懂得原理之后再用它,如果已经懂得原理,那么就不限制使用手段了。

输入两个数应该怎么做呢?

首先输入数字现阶段只能用input这个函数。但input函数获得的数字都会被认为是字符串,返回一个字符串回来,在拿到字符串之后该怎么用呢?

需要把字符串赋值到一个变量里面去,然后变量也是字符串,但现在需要比较是数字的大小。这就是需要思考的问题。

比较两个数字的大小,在之前的案例中已经做过了。两个值要进行大小比较。它们一般来讲,必须要求类型相同。那么接收两个数字就都可以通过下面的代码来接收。

a = input (input a number:)

b = input (input a number:)

着两个a、b都应该比较清楚都是string类型的,都是字符型。那么直接进行a、b的大小比较是没有问题的。

if a > b

那么直接进行大小比较是好还是不好,字符串是可以直接比较大小的,但就比如字符串0、1的比较的结果不一定是想要的。

所以数字的比较和字符串的比较是不一样的。现明确必须要有数字的方式。在一个说是数字但还没有说是整型。比如说拿字符串-1和1比较,或者字符串1和1.5进行比较。结果都未必是想要的。

所以比较时必须转化为数字,可以这样做。

if int(a) > int(b):

pass

pass语句为空语句,可以理解为就从这里通过的意思,就是一个占位语句,它什么都不做是一个空操作的占位语句仅此而已。

如果没有pass语句将会执行错误,因为冒号后不能为空必须要有语句块。为什么只是写了pass呢,因为内容现在什么都没有,先搭出框架。

if int(a) > int(b):

pass

elif int(a)

发现这段中的int反复出现,就可以这样改写。后续a、b就可以反复使用了。

a = int(a)

b = int(b)

if a >b:

pass

elif aint(a)

int不会直接去修改a,int(a)是会把字符串转化为新的值,但需要赋值给新的变量,是a = int(a),原来的a就已经被改变了。从一个字符串变为了一个数字。还可以这样写:

a = int(input(input a number:))

input内部的为字符串被int拿到后转化为整型,但是有可能失败,如果输入的是1.5,可能成功也可能失败,因为可能是截取1,但也有可能失败。

现假设输入的都是合法的整数,用以上方法先把字符串转化为整数,得到整数之后就可以进行比较了。

下面进行判断谁大谁小把谁输出的问题。

看同学们写的示例:

a = input(>>>)

b = input(>>>)

//获取a和b。

a = int(a)

b = int(b)

//在转化一下。这样写是没什么问题的,熟悉之后就可以写到一起去。现阶段先不关心输入是错误的,因为验证是一件非常繁琐的事情。现在练习的是中间的逻辑部分。

if a > b://丢了等于的判断。

print(a)

esle:

print(b)

//例如a>b走的a,那a=b呢?就该有else去了。

这里需要注意边界的问题,也就是>=问题,大于小于但还需要注意等于。所以每次写完都应该检查一下,避免漏掉了边界。

a = input(>>>)

b = input(>>>)

a = int(a)

b = int(b)

if a >= b:

print(a)

esle:

print(b)

两种写法都没有错,提醒的是在使用if时每一个边界都需要检查,避免漏掉边界。

下一步需要把a、b比较大小,可以用max内置函数,然后再打印出来。

print (max(a,b))

max函数的好处在于已经把中间逻辑已经写好了。现重点在于练习使用if else的严格逻辑。

现在思考如果比较三个数的大小,进行排序谁最大谁最小,用if esle来实现。不允许使用max函数,就是练习if else的使用。

练习逻辑,确保if else 各个分支没有漏洞。熟悉之后再使用技巧,比如使用内置的其他函数。

Ø给定一个不超过5位数的正整数,判断其几位

 

三、解决习题二

第二题要求稍微复杂了一点,限定5位的正整数,判断是几位数。可以有几个思路可以实现。

看同学的相关示例1:

a=6666

if a<10://小于10为个位。

print(1)

elif 9<100://大于9是可以不用了写的,前面的小于10已经卡住了条件。如果已经大于10就已经隐含大于9的条件了。

print(2)

elif 99

print(3)

elif 999

print(4)

elif 9999

print(5)

这里的大于9其实已经隐含已经测试过了。改为:

elif a<100:

其余分支修改类似于此:

elif a<1000:

elif a<10000:

elif a<100000:

多写的判断会显得很啰嗦。

看同学的相关示例2:

1 = int(input(input a number:))

if i // 10000 ://给一个数字依次向下除。除以10000都小于0,就是小于5位数的。

print  (5)

else i // 1000 :

print  (4)

else i // 100 :

print  (3)

else i // 10 :

print  (2)

else :

print  (1)

这里用的反向除法的处理方法,逻辑是行得通的,但不但要比较是不是0,还得先做一次除法运算,本身除法运算就不快。

这是引入的一些不该用的计算,本是可以直接进行比较的,但进行了多余的除法计算。能加就不要减,能乘就不要除。除法还会出现其他问题。能不计算就不计算,能比较就不要算。算是要消耗CPU资源的。

看同学的相关示例3:

a = input (>>>)

a = int(a)//给一个数然后转化为数字。

if a < 0:

print (输入的格式不对,请输入一个不超过5位的数)

elif a < 100000://做了验证判断。

if a < 10:

print(是一个1位数)

elif a < 100:

print(是一个2位数)

elif a < 1000:

print(是一个3位数)

elif a < 10000:

print(是一个4位数)

else:

print(是一个5位数)

else:

print(请输入一个不超过5位的数)

考虑得比较周全,做了一些输入条件验证,但还是不完整,验证判断实际会很复杂,中间的分支逻辑和案例2比较相似。

看同学的相关示例4:

number = int (input(number))//加入输入正确就转化为数字。

if number >= 100://>=写法更顺应思考逻辑,但没有好坏之分。从100折半判断。大于100后判断三位数还是4,5位数。

if number >= 10000:

print(5)

elif number >= 1000:

print(4)

else:

print(3)

else://用到了折半。

if number >= 10://小于100判断是两位数还是一位数。

print(2)

else:

print(1)

//这里给了5位数的判断,其实就可以思考10位数,20位数,30位数等的判断了。

也用到了折半的思想,这里用到折半是很不错的。

看同学的相关示例5:

newnumber = input(number???)

length = len (newnumber)

if length >= 3://这里应用了两个很好的东西。用到了字符串处理的方式。如果是字符串其实就可以对字符串的长度直接做判断。字符串最小输入为0。

if length > 4:

print(5)

elif length > 3:

print(4)

else:

print(3)

else://这里的判断做了对半处理。

if length == 2:

print(2)

else:

print(1)

这是用的字符串的处理方法,处理完数字之后已经知道字符串的长度,就没必要折中再进行比较,显得多此一举。

看同学的相关示例6:

a = int(input(请输入一个不超过5位的正整数:))

if a <= 0 or a>=100000:

print(请输入一个不超过5位的正整数:)

else ://这里进行了计算,且每次都要计算。取对数算肯定是不会快的,哪怕不用折半用if判断都比这快。最简单的方法往往是效率最高的。

import math

b = int(math.log10(a)+1)

print(b)

这里使用了math模块,用了取对数的方式,但计算速度比除法还慢,执行效率较低。可以思考这么去实现,但并不推荐。

练习参考答案:

val = input(>>>)

val = int(val)

if val >= 1000: #fold

if val >= 10000:

print(5)

else:

print(4)

else:

if val >= 100:

print(3)

elif val >= 10;

print(2)

else:

print(1)

做开发千万不要被限制住思维,要解放自己的思想,想到的更多再选择自己认为最后的方式,但自己认为的最优,也不一定是最好的。重要的是第一个版本有没有写出来,有没有写对。

如果没写出来,就要多加练习。现在练习的是思维严谨性。用if写出完完整整,没有漏洞的代码,这就是需要练习的

相关文章
|
11天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
10天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
10天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
33 10
|
11天前
|
IDE 程序员 开发工具
Python编程入门:打造你的第一个程序
迈出编程的第一步,就像在未知的海洋中航行。本文是你启航的指南针,带你了解Python这门语言的魅力所在,并手把手教你构建第一个属于自己的程序。从安装环境到编写代码,我们将一步步走过这段旅程。准备好了吗?让我们开始吧!
|
10天前
|
人工智能 数据挖掘 开发者
探索Python编程之美:从基础到进阶
本文是一篇深入浅出的Python编程指南,旨在帮助初学者理解Python编程的核心概念,并引导他们逐步掌握更高级的技术。文章不仅涵盖了Python的基础语法,还深入探讨了面向对象编程、函数式编程等高级主题。通过丰富的代码示例和实践项目,读者将能够巩固所学知识,提升编程技能。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考和启示。让我们一起踏上Python编程的美妙旅程吧!
|
7月前
|
数据采集 JSON JavaScript
Python爬虫案例:抓取猫眼电影排行榜
python爬取猫眼电影排行榜数据分析,实战。(正则表达式,xpath,beautifulsoup)【2月更文挑战第11天】
301 2
Python爬虫案例:抓取猫眼电影排行榜
|
2月前
|
数据采集 前端开发 NoSQL
Python编程异步爬虫实战案例
Python编程异步爬虫实战案例
71 2
|
6月前
|
数据采集 前端开发 Java
Python简单爬虫案例
用pyhton从网页中爬取数据,是比较常用的爬虫方式。网页一般由html编写,里面包含大量的标签,我们所需的内容都包含在这些标签之中,除了对python的基础语法有了解之外,还要对html的结构以及标签选择有简单的认知,下面就用爬取fl小说网的案例带大家进入爬虫的世界。
|
6月前
|
数据采集 前端开发 Java
Python简单爬虫案例
用pyhton从网页中爬取数据,是比较常用的爬虫方式。网页一般由html编写,里面包含大量的标签,我们所需的内容都包含在这些标签之中,除了对python的基础语法有了解之外,还要对html的结构以及标签选择有简单的认知,下面就用爬取fl小说网的案例带大家进入爬虫的世界。
|
7月前
|
数据采集 Web App开发 Java
Python 爬虫:Spring Boot 反爬虫的成功案例
Python 爬虫:Spring Boot 反爬虫的成功案例