语法错误:在 Python3.6 中,在全局声明之前将名称"cows"分配给



我正在尝试编辑全局变量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语句,cowsbulls已经是全局变量了。

您还有其他问题:

  • input()始终返回一个字符串。

  • 索引适用于字符串(你会得到单个字符(,你确定你想要吗?

  • 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

在将奶牛声明为全局之前,先给奶牛一个值。应首先声明全局范围

顺便说一句,你不需要全球声明。只需删除此行即可。

相关内容

  • 没有找到相关文章

最新更新