python问题:为什么不能用if else语句?

s=input()
try:
if complex(s)==complex(eval(s)):
print(eval(s)**2)#实例化变量并计算其平方数并打印
except:
print("输入有误")

以上代码如果用if else代替try except就不行

题主你好,

if语句的语法是:

但是按照题主说的, 把语句改为:

从格式上来说没毛病,缩进啥的也都正常, 但是框选的if后面没有跟着条件,所以肯定是错的.

说直白一点就是if语句后面必须要跟着条件才行, python当初就是这么设计的. 同理, 如果你在try关键字后面加上个条件, 即 "try 条件:" 那么也是不行的, 因为try当初设计的时候后面只能跟着冒号,不能跟着条件.

-----

希望可以帮到题主, 欢迎追问.

追问

也不行

追答

你问的不就是用if ...else...替换掉try... except...不行的原因吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-11-01

答: Python里面也是可以使用if else语句的,只是在你的问题当中,你使用的是try except语句。这个语句具有独特的功能,就是放在里面的代码可能会抛出异常,因此呢,我们也可以使用except来捕捉异常。那么当我们不处理相关的异常语句的时候,我们同样也可以使用 If else语句。 希望可以帮助到你。

本回答被网友采纳
第2个回答  2021-11-02

s=input()
if complex(s)==complex(eval(s)):
print(eval(s)**2)#实例化变量并计算其平方数并打印
else:
print("输入有误")


我这里没问题,你看看是不是空格位置没对好

第3个回答  2021-11-01
当输入的不是实数或复数形式的字符时,就会产生错误,这个错误如果不用try的形式去检查,会比较麻烦,所以使用try来处理。
如果不用try,那么,相对比较简单的是使用正则式去验证录入的s:
s=input()
if re.match(r'^\d+(.\d+)?([+-]\d+(.\d+)?j)?$', s):

....print(eval(s)**2)
else:
....print("输入有误")
这个可读性比使用try差多了,因为【complex(s)==complex(eval(s))】是很明确的表明要求s是一个可以转化为复数的字符串,而上面这个正则式则读起来要晦涩难懂得多(并且,我还不能保证它一定就是正确的)。
第4个回答  2021-11-01

你是想不使用异常处理来走对应的流程吧,那就需要先判断输入数据的类型符不符合条件

相似回答