专栏首页python3学习笔记-小甲鱼Python3学习第三十

学习笔记-小甲鱼Python3学习第三十

丰富的else语句

python中else不仅可以与if搭配组成控制流,还可以与while或for搭配使用

要么怎样,要么不怎样

干完了能怎样,干不完就别想怎样

没有问题,那就干吧

举例:求素数

def showMaxFactory(num):

    count = num // 2

    while count > 1:

        if num % count == 0:

            print('%d最大约数是%d' %(num,count))

            break

        count -= 1

    else:

        print('%d是素数' % num)

num = int(input('请输入一个数:'))

showMaxFactory(num)

输出异常举例:

try:

    int('abc')

except ValueError as reason:

    print('出错啦' + str(reason))

else:

    print('没有异常')

>>> 

出错啦invalid literal for int() with base 10: 'abc'

try:

    int('123')

except ValueError as reason:

    print('出错啦' + str(reason))

else:

    print('没有异常')

>>> 

没有异常

try:

    print(int('123'))

except ValueError as reason:

    print('出错啦' + str(reason))

else:

    print('没有异常')

>>> 

123

没有异常

with语句

try:

with open('data.txt','w') as f:

for each_line in f:

print(each_line)

except OSError as reason:

print('出错啦:' + str(reason))

-------------------分割线,哈哈哈------------------------

测试题

0.在python中,else语句能跟哪些语句进行搭配?

if ...:

...

else:

...

while ...:

...

else:

...

for ...:

...

else:

...

1.请问以下例子中,循环中的break语句会跳过else语句吗?

def showMaxFactory(num):

    count = num // 2

    while count > 1:

        if num % count == 0:

            print('%d最大约数是%d' %(num,count))

            break

        count -= 1

    else:

        print('%d是素数' % num)

num = int(input('请输入一个数:'))

showMaxFactory(num)

会的,如果将else语句与循环语句(for或while语句)搭配,那么只有在循环正常执行完成后才会执行else语句块的内容

2.请目测以下代码会打印什么内容?

try:

    print('ABC')

except:

    print('DEF')

else:

    print('GHI')

finally:

    print('JKL')

打印结果:

ABC

GHI

JKL

3.使用什么语句可以使你不必担心文件打开后却忘了关闭的尴尬?

with语句打开

with open('file.txt','w') as f:

4.使用with语句固然方便,但如果出现异常的话,文件还会自动正常关闭吗?

可以的,with会自动处理文件的打开和关闭,如果中途出现异常,会执行清理代码,然后确保文件自动关闭。

5.你可以换一种形式写出下边的伪代码吗?

with A() as a:

with B() as b:

suite

with语句处理多个项目的时候,可以用逗号隔开写成一条语句

with A() as a,B() as b:

suite

------------------分割线,哈哈哈------------------------

0.使用with语句改写以下代码,让python去关心文件的打开与关闭吧

def file_compare(file1,file2):

    f1 = open(file1)

    f2 = open(file2)

    count = 0 # 统计行数

    differ = [] #统计不一样的数量

    for line1 in f1:

        line2 = f2.readline()

        count += 1

        if line1 != line2:

            differ.append(count)

    f1.close()

    f2.close()

    return differ

file1 = input('请输入需要比较的头一个文件名:')

file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1,file2)

if len(differ) == 0:

    print('两个文件完全一样!')

else:

    print('两个文件共有【%d】处不同:' % len(differ))

    for each in differ:

        print('第%d行不一样' % each)

修改后:

def file_compare(file1,file2):

    with open(file1) as f1,open(file2) as f2:

        count = 0 # 统计行数

        differ = [] #统计不一样的数量

        for line1 in f1:

            line2 = f2.readline()

            count += 1

            if line1 != line2:

                differ.append(count)

    return differ

file1 = input('请输入需要比较的头一个文件名:')

file2 = input('请输入需要比较的另一个文件名:')

differ = file_compare(file1,file2)

if len(differ) == 0:

    print('两个文件完全一样!')

else:

    print('两个文件共有【%d】处不同:' % len(differ))

    for each in differ:

        print('第%d行不一样' % each)

1.你可以利用异常的原理,修改下面的代码使得更高效的实现吗?

print('|--- 欢迎进入通讯录 ---|')

print('|---1:查询联系人资料---|')

print('|---2:插入新的联系人---|')

print('|---3:删除已有联系人---|')

print('|---4:退出通讯录程序---|')

contacts = dict()

while 1:

    instr = int(input('\n请输入相关指令代码:'))

    if instr == 1:

        name = input('请输入联系人姓名:')

        if name in contacts:

            print(name + ':' + contacts[name])

        else:

            print('您输入的姓名不在通讯录中!')

    if instr == 2:

        name = input('请输入联系人姓名:')

        if name in contacts:

            print('您输入的姓名在通讯录中已存在 -->>',end='')

            print(name + ':' + contacts[name])

            if input('是否修改用户资料(YES/NO):') == 'YES':

                contacts[name] = input('请输入用户联系电话:')

        else:

            contacts[name] = input('请输入用户联系电话:')

    if instr == 3:

        name = input('请输入联系人姓名:')

        if name in contacts:

            contacts.pop(name)

            print('联系人%s已删除' %name)

        else:

            print('您输入的联系人不存在!')

    if instr == 4:

        break

print('|--- 感谢使用通讯录 ---|')

修改为(给出的答案有问题,还要再修改):

print('|--- 欢迎进入通讯录 ---|')

print('|---1:查询联系人资料---|')

print('|---2:插入新的联系人---|')

print('|---3:删除已有联系人---|')

print('|---4:退出通讯录程序---|')

contacts = dict()

while 1:

    instr = int(input('\n请输入相关指令代码:'))

    if instr == 1:

        name = input('请输入联系人姓名:')

        try:

            print(name + ':' + contacts[name])

        except KeyError:

            print('您输入的姓名不在通讯录中!')

    if instr == 2:

        name = input('请输入联系人姓名:')

        try:

            print('您输入的姓名在通讯录中已存在 -->>',end='')

            print(name + ':' + contacts[name])

            if input('是否修改用户资料(YES/NO):') == 'YES':

                contacts[name] = input('请输入用户联系电话:')

        except KeyError:

            contacts[name] = input('请输入用户联系电话:')

    if instr == 3:

        name = input('请输入联系人姓名:')

        try:

            contacts.pop(name)

            print('联系人%s已删除' %name)

        except KeyError:

            print('您输入的联系人不存在!')

    if instr == 4:

        break

print('|--- 感谢使用通讯录 ---|')

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python之if循环

    if 条件:   if语句块 elif 条件:   语句块 .... else:   else语句块 #if...elif...else 有一...

    py3study
  • python 分支

    ##    x=int(raw_input('please input number:'));

    py3study
  • Python练手例子(3)

    13、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方...

    py3study
  • Python基础

    Python,是龟叔在1989年为了打发无聊的圣诞节而编写的一门编程语言,特点是优雅、明确、简单,现今拥有丰富的标准库和第三方库。 Python适合开发Web网...

    py3study
  • python 分支

    ##    x=int(raw_input('please input number:'));

    py3study
  • python之if循环

    if 条件:   if语句块 elif 条件:   语句块 .... else:   else语句块 #if...elif...else 有一...

    py3study
  • Python练手例子(3)

    13、打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方...

    py3study
  • Python极简入门:数据类型、条件语句、循环语句、异常处理

    https://blog.csdn.net/weixin_37777526/article/details/108427112

    统计学家
  • Python练习17:依次接收用户输入的

    py3study
  • python3——print使用

    py3study

扫码关注云+社区

领取腾讯云代金券