SyntaxError:name';奶牛';在Python3.6中全局声明之前分配给

SyntaxError:name';奶牛';在Python3.6中全局声明之前分配给,python,global-variables,python-3.6,Python,Global Variables,Python 3.6,我试图在循环中编辑全局变量cows和bulls,但出现此错误“SyntaxError:name'cows'在全局声明之前分配到” 在将其声明为全局值之前,先给它一个值。您应该首先声明您的全局范围 顺便说一句,您不需要全局声明。删除这一行。Python没有块作用域,只有函数和类引入了新的作用域 因为这里没有函数,所以不需要使用global语句,cows和bulls已经是全局的了 您还有其他问题: input()始终返回字符串 索引工作在字符串上(您可以获得单个字符),您确定要这样做吗 user\

我试图在循环中编辑全局变量
cows
bulls
,但出现此错误
“SyntaxError:name'cows'在全局声明之前分配到”


在将其声明为全局值之前,先给它一个值。您应该首先声明您的全局范围


顺便说一句,您不需要全局声明。删除这一行。

Python没有块作用域,只有函数和类引入了新的作用域

因为这里没有函数,所以不需要使用
global
语句,
cows
bulls
已经是全局的了

您还有其他问题:

  • input()
    始终返回字符串

  • 索引工作在字符串上(您可以获得单个字符),您确定要这样做吗

  • user\u输入[index]==num
    总是为false<代码>'1'==1测试两种不同类型的对象是否相等;事实并非如此

  • 随机编号中的
    user\u input[index]也总是会为false,您的
    random\u no
    列表只包含整数,不包含字符串

如果用户要输入一个随机数,请将
input()
转换为整数,而不必费心于
enumerate()

import random

random_no = random.sample(range(0, 10), 4)
cows = 0
bulls = 0
#random_num = ','.join(map(str, random_no))
print(random_no)
user_input = input("Guess the no: ")
for index, num in enumerate(random_no):
    global cows, bulls
    print(index, num)
    if user_input[index] == num:
        cows += 1
    elif user_input[index] in random_no:
        bulls += 1

print(f'{cows} cows and {bulls} bulls')
user_input = int(input("Guess the no: "))
for num in random_no:
    if user_input == num:
        cows += 1
    elif user_input in random_no:
        bulls += 1