SyntaxError: name 'cows' is assigned to before global declaration in Python3.6
SyntaxError: name 'cows' is assigned to before global declaration in Python3.6
我正在尝试在循环内编辑全局变量 cows
和 bulls
,但收到此错误 "SyntaxError: name 'cows' is assigned to before global declaration"
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')
你在声明它为全局之前给奶牛一个值。你应该首先声明你的全局范围
顺便说一句,您不需要全局声明。只需删除此行。
Python 没有块作用域,只有函数和 类 引入了新的作用域。
因为你这里没有函数,所以不需要使用global
语句,cows
和bulls
已经全局变量.
您还有其他问题:
input()
returns 一个字符串,总是。
索引适用于字符串(您得到单独的字符),您确定要这样做吗?
user_input[index] == num
总是假的; '1' == 1
测试两种不同类型的对象是否相等;他们不是。
user_input[index] in random_no
也总是假的,你的 random_no
列表只包含整数,没有字符串。
如果用户要输入一个个随机数,将input()
转换为整数,不要理会enumerate()
:
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
我正在尝试在循环内编辑全局变量 cows
和 bulls
,但收到此错误 "SyntaxError: name 'cows' is assigned to before global declaration"
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')
你在声明它为全局之前给奶牛一个值。你应该首先声明你的全局范围
顺便说一句,您不需要全局声明。只需删除此行。
Python 没有块作用域,只有函数和 类 引入了新的作用域。
因为你这里没有函数,所以不需要使用global
语句,cows
和bulls
已经全局变量.
您还有其他问题:
input()
returns 一个字符串,总是。索引适用于字符串(您得到单独的字符),您确定要这样做吗?
user_input[index] == num
总是假的;'1' == 1
测试两种不同类型的对象是否相等;他们不是。user_input[index] in random_no
也总是假的,你的random_no
列表只包含整数,没有字符串。
如果用户要输入一个个随机数,将input()
转换为整数,不要理会enumerate()
:
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