关于一个问题

关于一个问题

def usi(num1 = None,num2 = None):

   if num1 == str(num1):
       print('错误')
       if num2 == str(num2):
           print('错误')
   elif num1 == int(num1):
       print(num1)
       if num2 == int(num2):
           print(num2)
   elif num1 == None:
       print('???')
       if num2 == None:
           print("????")

usi()

老师,我应该输入什么,才能让他执行后面打印的那个prin(’???‘)

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好:

同学需要调整一下代码的执行顺序。

然后调用该函数。不需要传递参数。

先判断是否为None,然后在去判断后面的int类型还是str类型。

同学首先需要知道if-elif的执行流程,先判断if的条件,符合执行该条件下的代码,然后退出条件判断。反之继续执行下面的elif的判断,符合执行该条件下的代码,然后退出条件判断。依次类推。从上到下依次去执行条件判断语句。

按照同学的执行顺序。如果同学的num1和num2都为None。先执行if中的int()方法的类型转换直接报错,因此无法继续向下判断。

int() argument must be a string, a bytes-like object or a number, not 'NoneType'

如果按照下面的写法(调整顺序),先判断是否为空。则不会出现上面的状况。

http://img1.sycdn.imooc.com//climg/5e0d60e20936ca9a06630632.jpg

如果我解决了同学的问题,请采纳!学习愉快^_^。

  • Kepler_ 提问者 #1
    那老师,按照你的方法,如果我输出的是数字它那就执行下面的int类型的,如果我输出的是有一个是整型,一个是字符串的话,那它会不会直接报错?如果要是报错,应该怎么去修改代码,让他直接打印出两个必须都是整数呢?
    2020-01-02 13:16:02
  • 好帮手乔木 回复 提问者 Kepler_ #2
    同学你好:不会报错。不过如果第一个参数(num1)是数字,第二个参数(num2)是一个不是数字的字符串。例如:usi(3,"1324fg")。那么同学需要再做一个判断。找到这部分的代码并修改(判断num1是否等于int(num1)): elif num1 == int(num1): print(num1) if num2==str(num2): print(1111) elif num2 == int(num2): print(num2) 学习愉快^_^。
    2020-01-02 15:51:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师