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写出完完整整,没有漏洞的代码,这就是需要练习的

相关文章
|
10天前
|
存储 数据挖掘 开发者
Python编程入门:从零到英雄
在这篇文章中,我们将一起踏上Python编程的奇幻之旅。无论你是编程新手,还是希望拓展技能的开发者,本教程都将为你提供一条清晰的道路,引导你从基础语法走向实际应用。通过精心设计的代码示例和练习,你将学会如何用Python解决实际问题,并准备好迎接更复杂的编程挑战。让我们一起探索这个强大的语言,开启你的编程生涯吧!
|
3天前
|
Python
Python编程入门:从零开始的代码旅程
本文是一篇针对Python编程初学者的入门指南,将介绍Python的基本语法、数据类型、控制结构以及函数等概念。文章旨在帮助读者快速掌握Python编程的基础知识,并能够编写简单的Python程序。通过本文的学习,读者将能够理解Python代码的基本结构和逻辑,为进一步深入学习打下坚实的基础。
|
7天前
|
数据采集 存储 数据处理
Python中的多线程编程及其在数据处理中的应用
本文深入探讨了Python中多线程编程的概念、原理和实现方法,并详细介绍了其在数据处理领域的应用。通过对比单线程与多线程的性能差异,展示了多线程编程在提升程序运行效率方面的显著优势。文章还提供了实际案例,帮助读者更好地理解和掌握多线程编程技术。
|
6天前
|
设计模式 缓存 开发者
Python中的装饰器:从入门到实践####
本文深入探讨了Python中强大的元编程工具——装饰器,它能够以简洁优雅的方式扩展函数或方法的功能。通过具体实例和逐步解析,文章不仅介绍了装饰器的基本原理、常见用法及高级应用,还揭示了其背后的设计理念与实现机制,旨在帮助读者从理论到实战全面掌握这一技术,提升代码的可读性、可维护性和复用性。 ####
|
10天前
|
存储 人工智能 数据挖掘
Python编程入门:打造你的第一个程序
本文旨在为初学者提供Python编程的初步指导,通过介绍Python语言的基础概念、开发环境的搭建以及一个简单的代码示例,帮助读者快速入门。文章将引导你理解编程思维,学会如何编写、运行和调试Python代码,从而开启编程之旅。
34 2
|
11天前
|
存储 Python
Python编程入门:理解基础语法与编写简单程序
本文旨在为初学者提供一个关于如何开始使用Python编程语言的指南。我们将从安装Python环境开始,逐步介绍变量、数据类型、控制结构、函数和模块等基本概念。通过实例演示和练习,读者将学会如何编写简单的Python程序,并了解如何解决常见的编程问题。文章最后将提供一些资源,以供进一步学习和实践。
24 1
|
16天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
16天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
16天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
18天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####