Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在捕捉到输入错误后在第二次迭代中出现问题_Python_Python 3.x_Error Handling - Fatal编程技术网

Python 在捕捉到输入错误后在第二次迭代中出现问题

Python 在捕捉到输入错误后在第二次迭代中出现问题,python,python-3.x,error-handling,Python,Python 3.x,Error Handling,只是学习python,试着做一个关于刽子手的游戏。 我在运行程序时遇到了一个问题,如果我在运行程序时不想把它扔掉(例如输入“enter”和输入“2”),那么它会给我一个随机的困难词 如果我试图把它扔掉,(例如输入“enter”,输入“12”,输入“3”),它会返回“None” 我一直在想办法,在不同的地方打印不同的变量,看看有什么问题,但我什么也找不到 如果能得到任何帮助,我将不胜感激。 欢迎您提供任何其他信息 随机导入 输入数学 #随机字发生器 以open('wordbank.csv')作为

只是学习python,试着做一个关于刽子手的游戏。 我在运行程序时遇到了一个问题,如果我在运行程序时不想把它扔掉(例如输入“enter”和输入“2”),那么它会给我一个随机的困难词

如果我试图把它扔掉,(例如输入“enter”,输入“12”,输入“3”),它会返回“None”

我一直在想办法,在不同的地方打印不同的变量,看看有什么问题,但我什么也找不到

如果能得到任何帮助,我将不胜感激。 欢迎您提供任何其他信息

随机导入
输入数学
#随机字发生器
以open('wordbank.csv')作为f:
file=f.read().split('\n')
单词列表=列表(文件)
def最大字母(x):
最大长度=0
对于x中的单词:
如果len(str(words))>=最大长度:
最大长度=长度(str(字))
返回最大长度
def字_选择器(x):
diff=input(“您想要什么难度?键入1-3的难度,然后按‘回车’:”)
差异列表=[]
diff_var=math.ceil((最大字母(单词列表)/3))
如果差异==“1”或差异==“2”或差异==“3”:
对于x中的单词:
长度=长度(str(字))
如果差异==“1”:

如果012
。函数
word\u selector()
将执行
else
语句,该语句将回调函数:

def word_selector(x):
    (...)
    else:
        word_selector(word_list) # <-- we are here
正如您现在看到的,
else
条件只是说“apple”,没有返回任何内容或将其赋值。由于函数不返回任何内容,
python
使其返回
None
,这类似于空值/未定义值。这就是为什么你会犯错误

作为解决方案,我认为您必须将错误检查和获取代码的输入从
word\u selector()
移动到
start\u hangman()
循环。例如,这可以按预期工作:

import random
import math

# Random Word Generator
with open('wordbank.csv') as f:
    file = f.read().split('\n')
    word_list = list(file)


def max_letters(x):
    max_length = 0
    for words in x:
        if len(str(words)) >= max_length:
            max_length = len(str(words))
    return max_length


def word_selector(x, diff):
    diff_list = []
    diff_var = math.ceil((max_letters(word_list) / 3))
    for words in x:
        length = len(str(words))
        if diff == "1":
            if 0 < length <= diff_var:
                diff_list.append(str(words))
        elif diff == "2":
            if diff_var < length <= (diff_var * 2):
                diff_list.append(str(words))
        elif diff == "3":
            if (diff_var * 2) < length:
                diff_list.append(str(words))
    return random.choice(diff_list)


def start_hangman():
    start = input("Press 'Enter' to start!\n")
    if start == "":
        diff = input(
            "What difficulty would you like? Type a difficulty of 1 - 3 and press 'Enter':  ")
        if diff == "1" or diff == "2" or diff == "3":
            print(word_selector(word_list, diff))
        else:
            print("That's not an option... Difficulties are 1 - 3. Try again.")
            start_hangman()

    else:
        print("What are you doing??? Just press enter!")
        start_hangman()


start_hangman()

随机导入
输入数学
#随机字发生器
以open('wordbank.csv')作为f:
file=f.read().split('\n')
单词列表=列表(文件)
def最大字母(x):
最大长度=0
对于x中的单词:
如果len(str(words))>=最大长度:
最大长度=长度(str(字))
返回最大长度
定义字选择器(x,差异):
差异列表=[]
diff_var=math.ceil((最大字母(单词列表)/3))
对于x中的单词:
长度=长度(str(字))
如果差异==“1”:

如果012
。函数
word\u selector()
将执行
else
语句,该语句将回调函数:

def word_selector(x):
    (...)
    else:
        word_selector(word_list) # <-- we are here
正如您现在看到的,
else
条件只是说“apple”,没有返回任何内容或将其赋值。由于函数不返回任何内容,
python
使其返回
None
,这类似于空值/未定义值。这就是为什么你会犯错误

作为解决方案,我认为您必须将错误检查和获取代码的输入从
word\u selector()
移动到
start\u hangman()
循环。例如,这可以按预期工作:

import random
import math

# Random Word Generator
with open('wordbank.csv') as f:
    file = f.read().split('\n')
    word_list = list(file)


def max_letters(x):
    max_length = 0
    for words in x:
        if len(str(words)) >= max_length:
            max_length = len(str(words))
    return max_length


def word_selector(x, diff):
    diff_list = []
    diff_var = math.ceil((max_letters(word_list) / 3))
    for words in x:
        length = len(str(words))
        if diff == "1":
            if 0 < length <= diff_var:
                diff_list.append(str(words))
        elif diff == "2":
            if diff_var < length <= (diff_var * 2):
                diff_list.append(str(words))
        elif diff == "3":
            if (diff_var * 2) < length:
                diff_list.append(str(words))
    return random.choice(diff_list)


def start_hangman():
    start = input("Press 'Enter' to start!\n")
    if start == "":
        diff = input(
            "What difficulty would you like? Type a difficulty of 1 - 3 and press 'Enter':  ")
        if diff == "1" or diff == "2" or diff == "3":
            print(word_selector(word_list, diff))
        else:
            print("That's not an option... Difficulties are 1 - 3. Try again.")
            start_hangman()

    else:
        print("What are you doing??? Just press enter!")
        start_hangman()


start_hangman()

随机导入
输入数学
#随机字发生器
以open('wordbank.csv')作为f:
file=f.read().split('\n')
单词列表=列表(文件)
def最大字母(x):
最大长度=0
对于x中的单词:
如果len(str(words))>=最大长度:
最大长度=长度(str(字))
返回最大长度
定义字选择器(x,差异):
差异列表=[]
diff_var=math.ceil((最大字母(单词列表)/3))
对于x中的单词:
长度=长度(str(字))
如果差异==“1”:

如果0返回“这不是一个选项…困难是1-3。请重试。”)
没有wordbank.csv无法运行您的代码。我有它。如前所述,若我不想把它扔掉,程序就可以运行。若你们提出了一个异常,那个么你们必须提到自定义错误。并没有错误。它仍在输出结果。结果是“无”。(wordbank.csv中没有一个单词,文件中只有五个字母或更多的单词)您在代码的该部分没有返回任何内容,只是打印了一些内容。尝试
返回“这不是一个选项…困难是1-3。再试一次。”)
没问题!一般来说,尽量将每个函数的角色分开:一个函数选择单词,另一个函数获取输入等等。。。它不仅使查找错误变得更容易,而且还很酷和优雅:DNo问题!一般来说,尽量将每个函数的角色分开:一个函数选择单词,另一个函数获取输入等等。。。它不仅会使发现错误变得更容易,而且还很酷和优雅:D