如何检查用户是否输入了一个整数(Python)

问题描述:

我可能会不断地用Python来询问我的项目(因为我已经有3个帮助请求了),但我只是想尽可能做到这一点。这次我想制作一个if语句来检查用户是否输入了一个整数(数字)而不是别的,因为当他们没有输入数字时,程序就会崩溃,我不喜欢那样,我喜欢提示他们发出一条消息,说他们需要输入一个数字,而不是别的。如何检查用户是否输入了一个整数(Python)

这里是我的代码:

def main(): 
    abc = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz' 
    message = input("What's the message to encrypt/decrypt? ") 
    key = int(input("What number would you like for your key value? ")) 
    choice = input("Choose: encrypt or decrypt. ") 
    if choice == "encrypt": 
     encrypt(abc, message, key) 
    elif choice == "decrypt": 
     encrypt(abc, message, key * (-1)) 
    else: 
     print("Bad answer, try again.") 

def encrypt(abc, message, key): 
    text = "" 
    for letter in message: 
     if letter in abc: 
      newPosition = (abc.find(letter) + key * 2) % 52 
      text += abc[newPosition] 
     else: 
      text += letter 
    print(text) 
    return text 

main() 

我猜if声明必须在def encrypt(abc, message, key)方法的地方,但我可能是错的,你可以请帮我找出如何解决这个问题,我将非常感谢您的时间来帮助我。

谢谢!!!

使用try .. except

try: 
    key = int(input('key : ')) 
    # => success 
    # more code 
except ValueError: 
    print('Enter a number only') 

在您的代码:

def main(): 
    abc = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz' 
    message = input("What's the message to encrypt/decrypt? ") 
    choice = input("Choose: encrypt or decrypt. ") 
    def readKey(): 
     try: 
     return int(input("What number would you like for your key value? ")) 
     except ValueError: 
     return readKey() 
    key = readKey() 
    if choice == "encrypt": 
     encrypt(abc, message, key) 
    elif choice == "decrypt": 
     encrypt(abc, message, key * (-1)) 
    else: 
     print("Bad answer, try again.") 

def encrypt(abc, message, key): 
    text = "" 
    for letter in message: 
     if letter in abc: 
      newPosition = (abc.find(letter) + key * 2) % 52 
      text += abc[newPosition] 
     else: 
      text += letter 
    print(text) 
    return text 

main() 
+0

你有没有在代码中的任何想法,我可以把这个?你认为我应该把它放在'如果在ABC的信中:'??? – Kieran

+0

@基兰我更新了我的答案。 –

+0

非常感谢你的帮助! – Kieran