【Python】动态类型、输入和输出、条件语句

简介: 【Python】动态类型、输入和输出、条件语句

动态类型

程序运行过程中,变量的类型可能会发生改变

a = 'hello'  
print(a)  
  
a = 10  
print(a)
#运行结果
hello
10
  • 在程序执行过程中,a 的类型刚开始是 int,后面变成了 str

C++ / Java 这样的语言则不允许这样的操作,一个变量定义后类型就是固定的了。这种特性则称为 “静态类型”,如果尝试修改静态类型的类型,变异阶段就会报错

一个编程语言,是否是动态类型,只是取决于运行时,类型是否发生改变,而不取决于变量定义的时候是否声明类型

python 中,也可以进行类型声明,不过不写也不影响什么:

a:str = 'hello'  
print(a)  
  
a:int = 10  
print(a)

优劣

动态写法比较灵活,提高了语法的表达能力,然而,在编程中,“灵活”是一个贬义词,更容易出错。相比之下,静态类型的语言还是更好一些,尤其是在大型的程序中,多人协作发开的程序中

因此很多公司,在创业之初,喜欢用 Python 来开发,产品规模小,也就是一两个程序猿,很快就能搞出来。但是当项目到达一定规模之后,动态类型的劣势就逐渐体现出来了,很多公司就会针对之前 Python 写的代码使用其他语言进行重构

动态类型特性是一把双刃剑

  • 对于中小型程序,可以大大的减少代码量(比如写一段代码就可以同时支持多种类型)
  • 对于大型程序,则提高了模块之间的交互成本(程序猿 A 提供的代码难以被 B 理解)

输入输出

和用户交互

程序需要和用户进行交互

  • 用户把信息传递给程序的过程,称为 “输入
  • 程序把结果展示给用户的过程,称为 “输出
    输入输出的最基本的方法就是控制台。用户通过控制台输入一些字符串,程序再通过控制台打印出一些字符串

对于机械操作的面板,就叫“控制台”,控制台上会有一些按钮,开关,操作杆… 后来有了计算机之后,控制台的概念也就延续下来了,只不过计算机是通过键盘鼠标等进行操作,把操作结果显示到屏幕上

计算机里,就把用户能输入命令,向计算机安排工作,计算机再把结果显示出来,这样的程序就称为“控制台

PyCharm 运行程序时,下方弹出的窗口就可以视为控制台

Windows 自带的 cmd 程序,也可以视为是控制台

控制台是一种人和计算机交互的最基础方式

但是日常生活中却不常用,更常见的交互方式是“图形化界面

但是图形化界面的程序编写并不容易,我们还是使用控制台的方式来与计算机进行交互

基于控制台输出

Python 使用 print 函数输出到控制台:

print('hello')

格式化字符串

将字符串与数据进行拼接打印:

a = 10
print(f"a = {a}")
# 输出结果
a = 10
  • 这个语法,叫做“格式化字符串”,f- string,此处的 f 是 “format ““
  • 此时,就可以使用{ }这样的语法,王字符串里嵌入变量或者表达式
a = 10
print(f"a = {a + 10}")
#输出结果
a = 20

像格式化打印字符串,很多编程语言都进行了各自的探索

  • C,printf 使用%d%s 这样的占位符
  • C++,采用了 std:: cout,使用 <<
  • Java,采用字符串拼接,允许字符串和其他类型的值进行拼接
  • Python 最早支持的格式化字符串,也是效仿 Cprintf,做出了改进。直到 Python 3.6 版本才开始支持 f-string

通过控制台输入

python 使用 input 函数,从控制台读取用户的输入

num = input('请输入一个整数: ')
print(type(num))
print(f'你输入的整数是 {num}')
#输出结果
请输入一个整数: 10
<class 'str'>
你输入的整数是 10

input 执行的时候,就会等待用户输入

  • 这个等待可能是一个非常长的等待,完全就看用户什么时候去输入
  • 如果用户始终不输入,就会一直在这里死等,不见不散~

input 的返回值,其实是一个 str

  • 如果只是单纯的拿到用户的输入,然后打印,此时就按照 str 打印即可
  • 如果需要根据用户输入的内容进行算术计算,此时就需要先把读到的 str 转换成 int
a = input('请输入第一个整数')  
b = input('请输入第二个整数')  
  
print(f'a + b = {a + b}')
#输出结果
请输入第一个整数4
请输入第二个整数5
a + b = 45

进行类型转后之后:

a = input('请输入第一个整数')  
b = input('请输入第二个整数')  
  
a = int(a)  
b = int(b)  
  
print(f'a + b = {a + b}')
#输出结果
请输入第一个整数4
请输入第二个整数5
a + b = 9

条件语句

什么是条件语句

条件语句能够表达 “如果 … 否则 …” 这样的语义. 这构成了计算机中基础的逻辑判定

条件语句也叫做分支语句,表示了接下来的逻辑可能有几种走向

如果,我认真敲代码,我就很容易找到工作;

  • 这是一个条件,如果条件成立,就会容易找到工作
    否则,我就容易毕业就失业
  • 条件不成立,就容易毕业就失业

条件语句,就是根据一个具体条件的成立与否,来决定接下来的逻辑走向

语法格式

Python 中使用 if else 关键字表示条件语句

(1)if

if expression: 
  do_something1
  do_something2 
next_something
  • 如果 expression 值为 True, 则执行 do_something1, do_something2, next_something
  • 如果 expression 值为 False, 则只执行 next_something, 不执行 do_something1, do_something2

(2)if-else

if expression: 
  do_something1
else: 
  do_something2
  • 如果 expression 值为 True, 则执行 do_something1
  • 如果 expression 值为 False, 则执行 do_something2

(3)if - elif - else

if expression1: 
  do_something1
elif expression2: 
  do_something2
else: 
  do_something3
  • 如果 expression1 值为 True, 则执行 do_something1
  • 如果 expression1 值为 False, 并且 expression2True 则执行 do_something2
  • 如果 expression1 值为 False, 并且 expression2False 则执行 do_something3

注意: Python 中的条件语句写法, 和很多编程语言不太一样

  • if 后面的条件表达式, 没有 ( ), 使用 : 作为结尾
  • if / else 命中条件后要执行的 “语句块”, 使用缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
  • 对于多条件分支, 不是写作 else if, 而是 elif (合体了)

示例: 输入 1 表示愿意认真学习, 输入 2 表示躺平摆烂 `

choice = input('输入 1 表示认真学习,输入 2 表示躺平')  
  
if choice == '1':  
    print(('你能找到工作'))  
elif choice == '2':  
    print('你废了')  
else:  
    print('输入错误')
  • 注意 ifelifelse 后面都有:

缩进和代码块

Python 中使用缩进表示代码块. 不同级别的缩进, 程序的执行效果是不同的

a = input('输入第一个整数:')  
b = input('输入第一个整数:')  
  
if a == '1':  
    if b == '2':  
        print('aaa')  
    print('bbb')  
print('ccc')
#运行结果
输入第一个整数:1
输入第一个整数:2
aaa
bbb
ccc
  • 两个条件都满足才会打印 aaa,因为打印 aaa 的语句有两级缩进,相当于是 if b == '2' 条件内部的代码块
  • 第一个条件满足,就会打印 bbb,因为打印 bbb 的语句只有一级缩进,相当于是 if a== '1' 条件内部的代码块
  • 两个条件即使都不满足,也能打印 ccc,因为打印 ccc 的语句,没有缩进,相当于和两个 if 都无关

当前有多级嵌套的时候,当前的雨具属于哪个代码块,完全取决于缩进的级别

空语句

pass 表示空语句, 并不会对程序的执行有任何影响, 只是占个位置, 保持 Python 语法格式符合要求.

a = int(input("请输入一个整数:"))
if a != 1: 
  pass 
else:    
  print("hello")
  • 虽然希望条件满足的时候,什么都不做,但是由于 Python 对于语法格式,尤其是缩进和代码块要求较高,所以如果什么都不写,是不符合语法要求的,所以必须得写一个 pass 空语句来占位

练习

1. 输入一个整数,判断是否是奇数

a = int(input('输入一个整数'))  
  
if a % 2 == 1:  
    print(f'{a} 是一个奇数')  
else:  
    print(f'{a} 不是一个奇数')
  • 这串代码在 C++/Java 是不太行的,因为在那边 -19 % 2 == -1,和 1 是不相等的。但在 Python 中,-19 % 2 == 1

2. 输入一个整数,判断是正数还是负数

a = int(input('输入一个整数'))  
  
if a > 0:  
    print(f'{a} 是正数')  
elif a < 0:  
    print(f'{a} 是负数')  
else:  
    print(f'{a} 是 0')

3. 判断年份是否是闰年

每隔 4 年润一次;如果是世纪闰年,得看能否被 400 整除

year = int(input('输入一个年份'))  
  
if year % 100 == 0:  
    # 世纪闰年的判定  
    if year % 400 == 0:  
        print('闰年')  
    else:  
        print('平年')  
          
else:  
    # 普通闰年的判定  
    if year % 4 == 0:  
        print('闰年')  
    else:  
        print('平年')


相关文章
|
2月前
|
存储 索引 Python
Python散列类型(1)
【10月更文挑战第9天】
|
19天前
|
数据可视化 Python
以下是一些常用的图表类型及其Python代码示例,使用Matplotlib和Seaborn库。
通过这些思维导图和分析说明表,您可以更直观地理解和选择适合的数据可视化图表类型,帮助更有效地展示和分析数据。
60 8
|
1月前
|
开发工具 Python
[oeasy]python043_自己制作的ascii码表_循环语句_条件语句_缩进_indent
本文介绍了如何使用Python制作ASCII码表,回顾了上一次课程中`print`函数的`end`参数,并通过循环和条件语句实现每8个字符换行的功能。通过调整代码中的缩进,实现了正确的输出格式。最后展示了制作完成的ASCII码表,并预告了下一次课程的内容。
29 2
|
1月前
|
Python
在 Python 中实现各种类型的循环判断
在 Python 中实现各种类型的循环判断
34 2
|
2月前
|
存储 数据安全/隐私保护 索引
|
2月前
|
Python
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
本篇将详细介绍Python中的字符串类型及其常见操作,包括字符串的定义、转义字符的使用、字符串的连接与格式化、字符串的重复和切片、不可变性、编码与解码以及常用内置方法等。通过本篇学习,用户将掌握字符串的操作技巧,并能灵活处理文本数据。
63 1
【10月更文挑战第6天】「Mac上学Python 11」基础篇5 - 字符串类型详解
|
2月前
|
Python
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
本篇将详细介绍Python中的布尔类型及其应用,包括布尔值、逻辑运算、关系运算符以及零值的概念。布尔类型是Python中的一种基本数据类型,广泛应用于条件判断和逻辑运算中,通过本篇的学习,用户将掌握如何使用布尔类型进行逻辑操作和条件判断。
69 1
【10月更文挑战第6天】「Mac上学Python 10」基础篇4 - 布尔类型详解
|
2月前
|
数据安全/隐私保护 Python
【10月更文挑战第17天】「Mac上学Python 28」基础篇9 - 条件语句与逻辑判断
在Python中,条件语句和逻辑判断是控制程序执行流程的关键工具,帮助程序在不同条件下做出不同决策。通过本篇的学习,您将掌握单选、双分支、多选结构、单行条件表达式、条件嵌套、条件判断的类型和逻辑运算符的用法,从而更灵活地控制程序执行流程。
58 5
WK
|
2月前
|
存储 Python
Python内置类型名
Python 内置类型包括数字类型(int, float, complex)、序列类型(str, list, tuple, range)、集合类型(set, frozenset)、映射类型(dict)、布尔类型(bool)、二进制类型(bytes, bytearray, memoryview)、其他类型(NoneType, type, 函数类型等),提供了丰富的数据结构和操作,支持高效编程。
WK
28 2
|
2月前
|
存储 编译器 索引
Python 序列类型(2)
【10月更文挑战第8天】
Python 序列类型(2)