2
前引用了我在使用PyCharm社区编辑一个简单的练习,我得到一个警告:没有局部变量,但警告:分配
这种检查发出警告之前 分配引用局部变量。
但是这里没有局部变量,并且它在Windows PowerShell上运行良好。它出什么问题了?
# This is a guess the number game.
import random
secret_number = random.randint(1, 21)
print("I am thinking of a number between 1 and 20. You have three chances.")
# Ask the player to guess 3 times.
for guesses_taken in range(1, 4):
guess = int(input('Take a guess.\n'))
if guess > secret_number:
print('Your guess is too high.')
elif guess < secret_number:
print('Your guess is to low.')
elif guess == secret_number:
if guesses_taken == 1:
print('Oh my god. You just guessed only one time.')
else:
print("You are right. I'm thinking of %s, and you guessed my
number in %s guesses." % (secret_number, guesses_taken))
else:
break
if guess != secret_number: --> # Name 'guess' can be not defined.
print('Nope. The number I was thinking of was ' + str(secret_number) + '.')
同样,这里修改后的版本仍然有同样的问题。
# This is a guess the number game.
import random
secret_number = random.randint(1, 21)
print("I am thinking of a number between 1 and 20. You have three chances.")
# Ask the player to guess 3 times.
for guesses_taken in range(1, 4):
guess = int(input('Take a guess.\n'))
if guess > secret_number:
print('Your guess is too high.')
elif guess < secret_number:
print('Your guess is to low.')
else:
break
if guess == secret_number: --> # Name 'guess' can be not defined
if guesses_taken == 1: --> # Name 'guesses_taken' can be not defined
print('Oh my god. You just guessed only one time.')
else:
print("You are right. I'm thinking of %s, and you guessed my number in %s guesses." % (
secret_number, guesses_taken))
else:
print('Nope. The number I was thinking of was ' + str(secret_number) + '.')
**感谢您的帮助**但是,在编程过程中这个问题允许,还是会带来更多意想不到的麻烦? – Tuto
不,你的程序非常好,因为你的循环肯定会执行。 PyCharm用来给你警告的规则可能不会考虑到这些,只依赖于代码的一般结构。无论如何,在没有真正执行它的情况下,可以做什么都有限制。所以,没有任何麻烦! –
**非常感谢** – Tuto