我的输入在不应该的时候运行

时间:2015-11-21 16:55:03

标签: python input

我的问题在于,我试图制作一个更好,更压缩但仍然更先进的计算器,带有文本输出和一切。当我遇到问题时,它仍处于非常非常早期阶段。

#!/usr/bin/python
import math
import time
import random
op=input('add/sub/mul/div/sqrt/n!/pow/ctof/hex')
if op==('ctof'):
    choice=input('C to F or F to C. 1 or 2')
    if choice=='1':
        c=float(input('Input Celcius'))
        print(str(c)+' Degrees Celcius = '+str(c*1.8+32)+' Degrees Fahrenheit')
    if choice=='2':
        f=float(input('Input Fahrenheit'))
        print(str(f)+' Degrees Fahrenheit = '+str((f-32)/1.8)+' Degrees Celcius')
    else:
        print('Invalid operation')
if op==('sqrt')or('n!'):
    x=float(input('Input X'))
    if op==('sqrt'):
        print('The square root of '+str(x)+' is: '+str(math.sqrt(x)))
    if op==('n!'):
        print('The factorial of '+str(x)+' is: '+str(math.factorial(x)))
else:
    x=float(input('Input X'))
    y=float(input('Input Y'))
if op==('add'):
    print(str(x)+' + '+str(y)+' = '+str(x+y))

问题是平方根和阶乘条件中的x输入而不是 else: 一。因此,当我使用add时,它表示缺少Y.我做错了什么,为什么错误的输入开始。

顺便说一句,抱歉凌乱的代码。如上所述,我希望它紧凑。此外,我认为这是个人看待的责任(如果有效)。

1 个答案:

答案 0 :(得分:2)

您想要的比较如下:

if op == 'sqrt' or op == 'n!':

您的代码存在问题:

if op == 'sqrt' or 'n!':

是它总是计算为true,因为'n!'是一个常量的真值。它不会评估您认为评估的内容,它会执行以下操作:

if (op == 'sqrt') or 'n!':

成为

if (op == 'sqrt') or True: