[重学Python] Day1 变量+分支+循环

简介: [重学Python] Day1 变量+分支+循环

[重学Python] Day1 变量+分支+循环

项目链接:https://github.com/jackfrued/Python-100-Days

一、Python之禅

在Python交互式环境中输入下面的代查看结果,请尝试将看到的内容翻译成中文。

import this
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
优美比丑陋好
清晰比晦涩好
简单比复杂好
复杂比错综复杂好
扁平比嵌套好
稀疏比密集好
可读性很重要
特殊情况也不应该违反这些规则
但现实往往并不那么完美
异常不应该被静默处理
除非你希望如此
遇到模棱两可的地方,不要胡乱猜测
肯定有一种通常也是唯一一种最佳的解决方案
虽然这种方案并不是显而易见的,因为你不是那个荷兰人[这里指的是Python之父Guido]
现在开始做比不做好
不做比盲目去做好
如果一个实现方案难于理解,它就不是一个好的方案
如果一个实现方案易于理解,它很有可能是一个好的方案
命名空间非常有用,我们应当多加利用

二、变量

(二)、变量和类型

  • 整型:Python中可以处理任意大小的整数,而且支持二进制(如0b100,换算成十进制是4)、八进制(如0o100,换算成十进制是64)、十进制(100)和十六进制(0x100,换算成十进制是256)的表示法。
  • 浮点型:浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,浮点数除了数学写法(如123.456)之外还支持科学计数法(如1.23456e2)。
  • 字符串型:字符串是以单引号或双引号括起来的任意文本,比如'hello'"hello",字符串还有原始字符串表示法、字节字符串表示法、Unicode字符串表示法,而且可以书写成多行的形式(用三个单引号或三个双引号开头,三个单引号或三个双引号结尾)。
  • 布尔型:布尔值只有TrueFalse两种值,要么是True,要么是False,在Python中,可以直接用TrueFalse表示布尔值(请注意大小写),也可以通过布尔运算计算出来(例如3 < 5会产生布尔值True,而2 == 1会产生布尔值False)。
  • 复数型:形如3+5j,跟数学上的复数表示一样,唯一不同的是虚部的i换成了j。实际上,这个类型并不常用,大家了解一下就可以了。

(三)、变量命名

  • 变量名由字母(广义的Unicode字符,不包括特殊字符)、数字和下划线构成,数字不能开头。
  • 大小写敏感(大写的a和小写的A是两个不同的变量)。
  • 不要跟关键字(有特殊含义的单词,)和系统保留字(如函数、模块等的名字)相同。

(四)、变量的使用

1、加减乘除

a = 666
b = 888
print(a + b)
print(a - b)
print(a * b)
print(a / b)

输出结果
1554
-222
591408
0.75

2、使用type函数检查变量类型

a = 1
b = 0.01
c = True
d = '你好'
e = 1 + 5j
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))

输出结果
<class 'int'>
<class 'float'>
<class 'bool'>
<class 'str'>
<class 'complex'>

3、变量类型转换

  • int():将一个数值或字符串转换成整数,可以指定进制。
  • float():将一个字符串转换成浮点数。
  • str():将指定的对象转换成字符串形式,可以指定编码。
  • chr():将整数转换成该编码对应的字符串(一个字符)。
  • ord():将字符串(一个字符)转换成对应的编码(整数)。
a = float(input('a = '))
b = int(input('b = '))
print('%d + %d = %d' % (a, b, a + b))
print('%d - %d = %d' % (a, b, a - b))
print('%d * %d = %d' % (a, b, a * b))
print('%d / %d = %f' % (a, b, a / b))
print('%d // %d = %d' % (a, b, a // b))
print('%d %% %d = %d' % (a, b, a % b))
print('%d ** %d = %d' % (a, b, a ** b))

输入内容
a = 4.0 b = 6
输出内容
4 + 6 = 10
4 - 6 = -2
4 * 6 = 24
4 / 6 = 0.666667
4 // 6 = 0
4 % 6 = 4
4 ** 6 = 4096

其中%d是整数的占位符,%f是小数的占位符,%%表示百分号(因为百分号代表了占位符,所以带占位符的字符串中要表示百分号必须写成%%),字符串之后的%后面跟的变量值会替换掉占位符然后输出到终端中。

4、运算符

运算符 描述
[] [:] 下标,切片
** 指数
~ + - 按位取反, 正负号
* / % // 乘,除,模,整除
+ - 加,减
>> << 右移,左移
& 按位与
^ `\ ` 按位异或,按位或
<= < > >= 小于等于,小于,大于,大于等于
== != 等于,不等于
is is not 身份运算符
in not in 成员运算符
not or and 逻辑运算符
= += -= *= /= %= //= **= &= ` =`^= >>= <<= (复合)赋值运算符
5、练习
经典题目:输入年份判断闰年
year = int(input('请输入年份'))
leap_year = year % 4 == 0 && year % 100 != 0 || year % 400 == 0
print(leap_year)

输入:2000
结果:True

三、分支结构

在python中分支结构使用if-elif-else

题目:百分制成绩转换为等级制成绩
如果输入的成绩在90分以上(含90分)输出A;80-90分(不含90分)输出B;70-80分(不含80分)输出C;60-70分(不含70分)输出D;60分以下输出E。

score = float(input('请输入成绩'))
if score >= 90:
    print('Your Grage is A Level')
elif score >= 80 and score < 90:
    print('Your Grage is B Level')
elif score >= 70 and score < 80:
    print('Your Grage is C Level')
elif score >= 60 and score < 70:
    print('Your Grage is D Level')
else:
    print('Your Grage is E Level')
题目:分段函数求职
        x - 5    (x > 1)
f(x) =    x + 2    (-1 <= x <= 1)
        x + 3    (x < -1)

x = float(input('Please enter the value of X'))
if x > 1:
    result = x - 5
else:
    if x >= -1:
        result = x + 2
    else:
        result = x + 3
print('The result is %f' % result)

上述两道简题是扁平和嵌套的两种分支情况,考虑到Python之禅中提到的’扁平比嵌套好‘,在可以不使用嵌套的情况下尽量不使用嵌套。

四、循环结果

(一)、for-in循环

当明确世道循环执行的次数时,推荐使用for-in循环

range()函数
- `range(101)`:可以用来产生0到100范围的整数,需要注意的是取不到101。
- `range(1, 101)`:可以用来产生1到100范围的整数,相当于前面是闭区间后面是开区间。
- `range(1, 101, 2)`:可以用来产生1到100的奇数,其中2是步长,即每次数值递增的值。
- `range(100, 0, -2)`:可以用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
题目:实现1100的偶数求和
sum = 0
for x in range(2,101,2):
    sum += x
print('The sum of even numbers from 1 to 100 is %d' % sum)
题目:实现1100的偶数求和
sum = 0
sum = 0
for x in range(1,101):
    if x % 2 == 0:                #嵌套了分支结构
        sum += x
print('The sum of even numbers from 1 to 100 is %d' % sum)
相较于第一种方法,第二种的嵌套并不是一种很好的选择

(二)、while循环

如果要构造不知道具体循环次数的循环结构,推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。

下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

import random

answer = random.randint(1, 100)
counter = 0
while True:
    counter += 1
    number = int(input('Please enter your answer: '))
    if number < answer:
        print('Guess larger')
    elif number > answer:
        print('Guess smaller')
    else:
        print('Congratulations!')
        break
print('You have guessed a total of %d times.' % counter)
if counter > 7:
    print('DO better next time ')

上面的代码中使用了break关键字来提前终止循环,需要注意的是break只能终止它所在的那个循环,这一点在使用嵌套的循环结构(下面会讲到)需要引起注意。除了break之外,还有另一个关键字是continue,它可以用来放弃本次循环后续的代码直接让循环进入下一轮。

和分支结构一样,循环结构也是可以嵌套的,也就是说在循环中还可以构造循环结构。下面的例子演示了如何通过嵌套的循环来输出一个九九乘法表。

for i in range(1, 10):
    for j in range(1, i + 1):
        print('%d*%d=%d' % (i, j, i * j), end='\t')
    print()

1、练习输入一个正整数判断是不是素数。

from math import sqrt

num = int(input('请输入一个正整数: '))
end = int(sqrt(num))
is_prime = True
for x in range(2, end + 1):
    if num % x == 0:
        is_prime = False
        break
if is_prime and num != 1:
    print('%d是素数' % num)
else:
    print('%d不是素数' % num)

2、练习输入两个正整数,计算它们的最大公约数和最小公倍数。

x = int(input('x = '))
y = int(input('y = '))
# 如果x大于y就交换x和y的值
if x > y:
    # 通过下面的操作将y的值赋给x, 将x的值赋给y
    x, y = y, x
# 从两个数中较小的数开始做递减的循环
for factor in range(x, 0, -1):
    if x % factor == 0 and y % factor == 0:
        print('%d和%d的最大公约数是%d' % (x, y, factor))
        print('%d和%d的最小公倍数是%d' % (x, y, x * y // factor))
        break

3、练习打印如下所示的三角形图案。

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

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

    *
   ***
  *****
 *******
*********
row = int(input('请输入行数: '))
for i in range(row):
    for _ in range(i + 1):
        print('*', end='')
    print()


for i in range(row):
    for j in range(row):
        if j < row - i - 1:
            print(' ', end='')
        else:
            print('*', end='')
    print()

for i in range(row):
    for _ in range(row - i - 1):
        print(' ', end='')
    for _ in range(2 * i + 1):
        print('*', end='')
    print()
相关文章
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
8天前
|
存储 Python 容器
python之变量的使用
Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
|
1月前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
89 9
|
2月前
|
Python
[oeasy]python050_如何删除变量_del_delete_variable
本文介绍了Python中如何删除变量,通过`del`关键字实现。首先回顾了变量的声明与赋值,说明变量在声明前是不存在的,通过声明赋予其生命和初始值。使用`locals()`函数可查看当前作用域内的所有本地变量。进一步探讨了变量的生命周期,包括自然死亡(程序结束时自动释放)和手动删除(使用`del`关键字)。最后指出,删除后的变量将无法在当前作用域中被访问,并提供了相关示例代码及图像辅助理解。
126 68
|
2月前
|
Shell Python
[oeasy]python049_[词根溯源]locals_现在都定义了哪些变量
本文介绍了Python中`locals()`函数的使用方法及其在调试中的作用。通过回顾变量赋值、连等赋值、解包赋值等内容,文章详细解释了如何利用`locals()`函数查看当前作用域内的本地变量,并探讨了变量声明前后以及导入模块对本地变量的影响。最后,文章还涉及了一些与“local”相关的英语词汇,如`locate`、`allocate`等,帮助读者更好地理解“本地”概念在编程及日常生活中的应用。
45 9
|
3月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`&quot;&quot;&quot;` 或 `&#39;&#39;&#39;`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
163 2
|
3月前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
54 0
|
3月前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
35 2
|
3月前
|
Python
在 Python 中实现各种类型的循环判断
在 Python 中实现各种类型的循环判断
52 2
|
3月前
|
Python
Python 中,循环判断
Python 中,循环判断
76 1

热门文章

最新文章

推荐镜像

更多