8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在 Python 计算器中,有没有办法用 (try,except) 处理除以 0 的除法?例如 112+45*7/0

TFOH 2月前

53 0

有没有办法在我自己使用的 Python 计算器应用程序中使用 (try,except) 处理除以 0 的操作?例如 112+45*7/0?不是 23/0(2 个数字的情况)我想看看超过 10 个数字时的情况...

有没有办法在我自己用 Python 编写的计算器应用程序中使用 (try,except) 处理除以 0 的情况?例如 112+45*7/0?不是 23/0(2 个数字的情况)请问如果有超过 10 个数字,情况会怎样?

我想看看你们的解决方案,请帮助我,我是初学者(

帖子版权声明 1、本帖标题:在 Python 计算器中,有没有办法用 (try,except) 处理除以 0 的除法?例如 112+45*7/0
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由TFOH在本站《python》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我正在尝试使用 Java 创建一个 p2p 协议实现。我编写了 Diffie-Hellman 算法,但后来我面临 MITM 攻击。所以,问题是:如何保护密钥交换?我如何获得...

    我正在尝试使用 Java 创建一个 p2p 协议实现。我编写了 Diffie-Hellman 算法,但后来遇到了 MITM 攻击。所以,问题是: 如何保护密钥交换?

    • 如何生成密钥:
    public void generateKeys(){
            try {
                final KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("DH");
                keyPairGenerator.initialize(2048);
    
                final KeyPair keyPair = keyPairGenerator.generateKeyPair();
    
                privateKey = keyPair.getPrivate();
                publicKey = keyPair.getPublic();
    
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    
    • 发送给他们:
     private void sendPublickKey(){
            Message message = new Message(null, null, Base64.getEncoder().encodeToString(publicKey.getEncoded()));
            String json = JsonUtils.serializeData(new Data(Data.DataType.PUBLIC_KEY, message, null));
            out.println(json);
        }
    
    
    • 收到:
    public void receivePublicKey(String encodedPublicKey){
            try {
                byte[] decodedKey = Base64.getDecoder().decode(encodedPublicKey);
                X509EncodedKeySpec keySpec = new X509EncodedKeySpec(decodedKey);
                KeyFactory keyFactory = KeyFactory.getInstance("DH");
                receivedPublicKey = keyFactory.generatePublic(keySpec);
    
                generateSharedSecret();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
    • 生成密钥:
    private void generateSharedSecret() {
            try {
                KeyAgreement keyAgreement = KeyAgreement.getInstance("DH");
                keyAgreement.init(privateKey);
                keyAgreement.doPhase(receivedPublicKey, true);
    
                byte[] sharedSecret = keyAgreement.generateSecret();
                secretKey = new SecretKeySpec(sharedSecret, 0, 32, "AES");
                System.out.println("Current session key: " + Base64.getEncoder().encodeToString(secretKey.getEncoded()));
    
                _HCP = new HaritaCP();
    
                validateSecretKey();
    
                Logger.logMessage("Shared secret key generated successfully.", Logger.LogType.info);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
  • Diffie-Hellman 是一种 非认证 密钥协商协议。密钥可以通过不安全的通道进行交换,攻击者不可能知道密钥。但是,一旦与 某人 ,您就必须验证与您交谈的一方的身份。

    要求他们提供凭证(密码、API 密钥等)在概念上就足够了,但不安全。客户端无法知道服务器是否存储了他们的凭证并在将来冒充他们。基于凭证的质询(如 Kerberos)面临类似的问题,因为服务器知道每个客户端的凭证(或其衍生品)。

    您需要在协议中添加某种注册来建立身份(通过安全连接)。具体操作如下:

    1. Diffie-Hellman 密钥交换
    2. 客户说“嗨,我是 faniffs ”,这是我的公钥
    3. 服务器查找 faniffs 但没有该记录
    4. 服务器创建客户端条目 faniffs
    5. 服务员说“你好,我是 server
    6. 公钥 faniffs 加密的随机数
    7. 客户端使用解密后的随机数进行回复,证明私钥的所有权

    这是双向 TLS 身份验证的粗略复制。如果在您的应用程序中有意义,您还可以研究其他形式的身份验证,例如 OpenID Connect。

  • 设计加密协议并不是 Stack Overflow 的重点,因此这实际上不是一个编程问题。如果您想要一个使用 DH 并防止 MiTM 的协议示例,请查看 TLS 协议,特别是 TLS 1.3。

  • @ixe013,我知道算法是如何工作的。但想象一下你是“中间人”。我将公钥发送给用户 2,你截取此密钥,因此用户 2 将无法收到它。你与我创建一个密钥,然后与用户 2 创建一个密钥。在这种情况下,你将能够通过截取它来读取所有数据,使用你的我的密钥解密,使用你的用户 2 的密钥加密并将其发送给他

  • 大家好,欢迎来到!Diffie-Hellman (DH) 旨在用于不安全的通道,这种通道可能遭受 MITM 攻击。即使攻击者可以完全访问合法参与者之间交换的消息,他们也无法重建共享秘密。

  • 任何除以 0 的表达式都是未定义的或不确定的。尝试处理除以 0 将需要您定义 x /0 实际上是什么,但没有这样的定义。

    如果您希望计算器在除以 0 时不崩溃,那么在程序遇到除法操作的任何时候,请使用 if 语句检查第二个数字是否为 0。如果是,则对其进行处理,如果不是,则正常进行。

    如果你问的是如何处理包含 2 个以上数字的表达式,你需要记住运算顺序。将你的表达式解析为几个部分,然后按顺序处理它们。除法的定义是两个数字之间的操作,你只需要先到达那里

返回
作者最近主题: