代码之家  ›  专栏  ›  技术社区  ›  Kieran

如何检查用户是否输入整数(Python)[重复]

  •  -1
  • Kieran  · 技术社区  · 7 年前

    我可能会不断询问我的Python项目(因为我已经有3个帮助请求了),但我只是想尽可能地做到最好。这次我想做一个 if 语句来检查用户是否输入整数(数字)而不是其他内容,因为当他们不键入数字时,程序将崩溃,我不喜欢这样,我喜欢用消息提示他们,说他们需要键入数字而不需要其他内容。

    这是我的代码:

    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()
    

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

    谢谢!!!

    1 回复  |  直到 7 年前
        1
  •  1
  •   DjaouadNM    7 年前

    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()