scipy.stats将正常z得分转换为p值Python3

时间:2019-03-12 01:47:36

标签: python-3.x while-loop scipy normal-distribution valueerror

使用这个小转换器有点挣扎,我无法让我超越第一个输入,这是反复要求的。有没有更优雅的方法来解决让我脱离循环的ValueError问题?

编辑:我还尝试了a = 1和a = 0的位置,当我这样做时,它不再要求我输入,而只是运行脚本而没有要求我进行第二次用户输入。

谢谢大家!

import scipy.stats as st
a=1
while a==1:
    try:
        choice = input('Press 1 for percentages to Z-Score, 2 for Z-score into percentages, one tailed')
        if choice ==1:
            percentage = input('Enter value')
            print(st.norm.ppf(percentage))
            a=0
        if choice ==2:
            score = input('Enter value')
            print(st.norm.cdf(score))
            a=0
    except ValueError:
        print('Invalid Entry')
        a=1

1 个答案:

答案 0 :(得分:0)

考虑了代码的错误方式后,我忘了检查基础知识:

在处理之前先转换您的输入!

我只是将两个输入都转换为浮点数,现在它就像一种魅力,包括在输入无效的情况下请求新输入。

import scipy.stats as st
a=1
while a==1:
    try:
        float(choice = input('Press 1 for percentages to Z-Score, 2 for Z-score into percentages, one tailed'))
        if choice ==1:
            percentage = float(input('Enter value'))
            print(st.norm.ppf(percentage))
            a=0
        if choice ==2:
            score = float(input('Enter value'))
            print(st.norm.cdf(score))
            a=0
    except ValueError:
        print('Invalid Entry')
        a=1