Python基础:输入输出、控制结构与异常处理详解
本文深入解析Python核心基础功能,涵盖input与print函数的详细用法及参数配置,讲解for与while循环、if-else分支逻辑及列表解析式,并演示try-except异常处理机制与raise手动抛出异常的方法,帮助开发者掌握算法题中常用的数据交互与控制逻辑。
前言
在Python数据结构的学习中,数据类型是基础。本文将重点介绍几个关键的内置函数,包括输入输出、流程控制以及异常处理。特别是输出格式的控制和流程逻辑,在编写算法题目时至关重要,掌握数据输出的规范格式对后续开发大有裨益。
1. 输入 input
程序运行过程中,经常需要与用户进行交互以获取数据或展示结果。Python 提供了一组内置函数,允许程序请求用户输入数据,并返回一个字符串类型的引用。这个核心函数就是 input。
#input案例
a=input("请输入你的名字:")
print('你的名字是:',a)
需要特别注意,input 函数返回的结果始终是一个字符串,其中包含用户在提示符后输入的所有字符。如果后续逻辑需要数值计算,必须显式地进行类型转换。例如,在下面的代码中,用户输入的字符串被转换为浮点数,以便进行后续的算术运算。
type(a)
#结果为str
a=float(a)
type(a)
#结果为float
2. 输出 print
2.1 普通输出
print 函数为输出 Python 程序的值提供了一种极其简便的方式。它可以接受零个或多个参数,默认情况下使用单个空格作为分隔符来显示结果。用户可以通过设置 sep 参数来自定义分隔符。此外,每次打印默认以换行符结尾,这一行为可以通过设置 end 参数进行修改。以下是一些具体示例。
print('hello')
#结果:hello
print('hello','world')
#结果:hello world
print('hello','world',sep='***')#sep指定特定的分隔符
#结果:hello***world
print('hello','world',end='****')#end 设置结尾参数
#结果:hello world****
2.2 格式化输出

格式化输出的左侧部分是模板(即格式化字符串),右侧部分则是用于填充模板的一系列值。需要注意的是,右侧值的数量必须与格式化字符串中 % 符号的数量严格一致。这些值将按照从左到右的顺序依次嵌入到格式化字符串中。 格式化字符串可以包含一个或多个转换声明。转换字符指示格式化运算符,指定插入到字符串相应位置的值类型。在上面的示例中,%s 表示字符串,%d 表示整数。其他可能的类型声明还包括 i、u、f、e、g、c 和 %。
具体转换类型如下表所示:

可以在 % 符号和格式化字符之间添加格式化修改符。格式化修改符允许根据指定的宽度对值进行左对齐或右对齐,也可以通过小数点后的数字来指定精度宽度。
格式化修改符的具体用法如下表所示:

让我们通过一些具体案例来演示:
name="apple"
price=6
print("the %s costs %d cent" %(name,price))
#结果:the apple costs 6 cent
print("The %+10s costs %5.2f cents" % (name,price))#+代表右对齐,10代表占用10个字符
#结果:The apple costs 6.00 cents
print("The %+10s costs %10.2f cents" % (name,price))#10.2代表占用10个字符,并保留2位小数。
#结果:The apple costs 6.00 cents
itemdict = {"item":"banana","cost":24}#使用字典传递参数
print("The %(item)s costs %(cost)7.1f cents" % itemdict)
#结果:The banana costs 24.0 cents
3. 控制语句
算法实现依赖于两个重要的控制结构:迭代和分支。Python 通过多种方式支持这两种结构,程序员可以根据实际需求选择最高效的方式。对于迭代操作,Python 提供了标准的 while 语句以及功能强大的 for 语句。while 语句会在给定条件为真时重复执行代码块。
count=1
while count<=5:
print("河南加油!")
count+=1
#结果如下:
河南加油!
河南加油!
河南加油!
河南加油!
河南加油!
for item in '河南加油!':
print(item)
# 结果如下
河
南
加
油
!
for i in range(5):
print(i)
# 结果如下
0
1
2
3
4
#通过for语句输出单个字符
wordlist = ['cat','dog','rabbit']
letterlist = []
for aword in wordlist:
for aletter in aword:
letterlist.append(aletter)
letterlist
#结果如下:
['c', 'a', 't', 'd', 'o', 'g', 'r', 'a', 'b', 'b', 'i', 't']
分支语句允许程序进行条件判断,并根据判断结果执行不同的操作。绝大多数编程语言都提供两种主要的分支结构:ifelse 和 if。以下是一个使用 if-else 语句实现的简单二元分支示例。
import math
n=float(input("请输入一个数"))
if n < 0:
print("Sorry,")
else:
print(math.sqrt(n))
#结果:请输入一个数 3
# 1.7320508075688772
#多条件分支
score=float(input("请输入一个数"))
if score >= 90:
print('A')
elif score >= 80:
print('B')
elif score >= 70:
print('C')
elif score >= 60:
print('D')
else:
print('F')
# 请输入一个数 90 A
列表可以通过结合迭代结构和分支结构来创建,这种方式被称为列表解析式。利用列表解析式,可以根据特定的处理逻辑和分支条件轻松生成列表。例如,若要创建一个包含前 10 个完全平方数的列表,可以使用以下 for 语句实现。
sqlist = [x*x for x in range(1,11) if x%2 != 0]
# [1, 9, 25, 49, 81]
[ch.upper() for ch in 'comprehension' if ch not in 'aeiou']
#['C', 'M', 'P', 'R', 'H', 'N', 'S', 'N']
4. 异常处理
在编写程序时,通常会遇到两类错误:
- 第一类是语法错误,即程序员在编写语句或表达式时违反了语法规则。例如,在编写 for 语句时忘记添加冒号。
- 第二类是逻辑错误,即程序能够顺利执行完毕,但返回了错误的结果。这可能是由于算法本身存在缺陷,或者程序员未能正确实现算法所致。有时,逻辑错误会引发诸如除以零、列表越界访问等严重情况,这些逻辑错误会导致运行时错误,进而导致程序终止运行。通常,这些运行时错误被称为异常。
当异常发生时,我们称程序“抛出”了异常。可以使用 try 语句来“处理”被抛出的异常。
- 可以在
try语句块中调用print函数来处理这个异常。对应的except语句块“捕捉”到这个异常,并向用户打印一条提示信息。 - except 块会捕捉到 sqrt 抛出的异常并打印提示消息,随后程序会使用对应数字的绝对值来确保 sqrt 的参数为非负数。这意味着程序并不会因此终止,而是继续执行后续的语句。
anumber = int(input("Please enter an integer "))
try:
print(math.sqrt(anumber))
except:
print("Bad Value for square root")
print("Using absolute value instead")
print(math.sqrt(abs(anumber)))
运行结果如下:

也可以使用 raise 语句来主动触发运行时异常。例如,可以先检查值是否为负数,如果是负数则抛出异常,而不是直接给 sqrt 函数提供负数。下面的代码段展示了创建新的 RuntimeError 异常的结果。请注意,程序仍然会终止,但导致其终止的异常是由我们手动创建的。
anumber=-21
if anumber < 0:
raise RuntimeError("You can't use a negative number")
else:
print(math.sqrt(anumber))
运行结果如下:

参考资料
- 《python数据结构与算法》
- 《大话数据结构》
到此这篇关于Python数据结构中输入输出、控制及异常处理的文章就介绍到这了,更多相关Python数据结构内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









