python数据结构输入输出及控制和异常

 更新时间:2022年01月25日 10:07:12   作者:柳小葱  
这篇文章主要介绍了python数据结构输入输出及控制和异常,上一章节中我们介绍了python的基础数据类型和集合数据类型,这章节给大家介绍一下python的输入输出、控制和异常,对数据类型感兴趣的同学可以查看一下文章<BR>

前言:

python数据类型: 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。以下是使用 ifelse 语句的一个简单的二元分支示例。

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 语句时忘记加冒号。
  • 第二种是逻辑错误,即程序能执行完成但返回了错误的结果。这可能是由于算法本身有错, 或者程序员没有正确地实现算法。有时,逻辑错误会导致诸如除以 0、越界访问列表等非常严重的情况。这些逻辑错误会导致运行时错误,进而导致程序终止运行。通常,这些运行时错误被称为异常。

当异常发生时,我们称程序“抛出”异常。可以用 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数据结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Deepsort + Yolo 实现行人检测和轨迹追踪的方法

    Deepsort + Yolo 实现行人检测和轨迹追踪的方法

    这篇文章主要介绍了Deepsort + Yolo 实现行人检测和轨迹追踪,本项目通过采用深度学习方法实现YOLO算法行人检测和deepsort算法对人员定位的和轨迹跟踪,需要的朋友可以参考下
    2021-09-09
  • 探索Python random模块随机性神奇世界

    探索Python random模块随机性神奇世界

    Python中的random模块提供了丰富的工具和函数,帮助我们生成随机数、操作随机序列,以及模拟随机性事件,在本文中,我们将分享random模块,了解它的基本用法、功能和应用领域,并提供示例代码来帮助你更好地理解随机性的神奇世界
    2023-11-11
  • Python脚本实现小猿口算

    Python脚本实现小猿口算

    最近小猿口算已经被不少大学生攻占,一个好好的给小学生的口算题已经变成了大学生的计算机大战,下面我们就来看看如何使用Python脚本就行吧小猿口算
    2024-10-10
  • python3 scrapy框架的执行流程

    python3 scrapy框架的执行流程

    Scrapy的安装有多种方式,它支持Python2.7版本及以上或Python3.3版本及以上。下面说明python3 scrapy框架的常用命令及框架执行流程,感兴趣的朋友一起看看吧
    2021-07-07
  • Python 从subprocess运行的子进程中实时获取输出的例子

    Python 从subprocess运行的子进程中实时获取输出的例子

    今天小编就为大家分享一篇Python 从subprocess运行的子进程中实时获取输出的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Pytest执行unittest TestSuite(测试套件)的实现方法

    Pytest执行unittest TestSuite(测试套件)的实现方法

    TestSuite一直是unittest的灵活与精髓之处,在繁多的测试用例中,可以任意挑选和组合各种用例集,这篇文章主要介绍了Pytest执行unittest TestSuite(测试套件)的实现方法,需要的朋友可以参考下
    2021-08-08
  • 在pycharm中使用matplotlib.pyplot 绘图时报错的解决

    在pycharm中使用matplotlib.pyplot 绘图时报错的解决

    这篇文章主要介绍了在pycharm中使用matplotlib.pyplot 绘图时报错的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • keras 如何保存最佳的训练模型

    keras 如何保存最佳的训练模型

    这篇文章主要介绍了keras 如何保存最佳的训练模型,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Python subprocess.Popen 实时输出 stdout的解决方法(正确管道写法)

    Python subprocess.Popen 实时输出 stdout的解决方法(正确管道写法)

    这篇文章主要介绍了Python subprocess.Popen实时输出stdout正确管道写法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • python3处理含有中文的url方法

    python3处理含有中文的url方法

    今天小编就为大家分享一篇python3处理含有中文的url方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05

最新评论