我正在学习Python,并且正在通过创建一个简单的游戏进行练习:石头,纸,剪刀。我创建了两个名为random_number.py
和ro_pa_sc.py
的Python模块。第一个包含生成随机字符串的代码,第二个包含游戏本身。
这是random_number.py
:
def r_p_s():
import random
random.choice([1, 2, 3])
if random.choice([1, 2, 3]):
return "r"
if random.choice([1, 2, 3]):
return "p"
if random.choice([1, 2, 3]):
return "s"
这是ro_pa_sc.py
:
#!/usr/bin/python
import random_number
def game():
random_number.r_p_s()
print r_p_s()
if __name__ == "__main__":
game()
但是,当我尝试从Bash的命令行运行ro_pa_sc.py
时,出现以下错误消息:
错误1:
File "ro_pa_sc.py", in module "game()"
错误2:
File "ro_pa_sc.py", in game print r_p_s()
我不知道可能是什么错误,因为我检查了导入模块的时间,并确保语法正确。似乎random_number模块可能是问题所在,但我又没有不知道为什么。
谁能告诉我我的错误在哪里?
答案 0 :(得分:1)
文件中有几个错误。
首先,您将if __name__ == "__main__":
缩进不正确。注意if
语句前面的多余空间,将其删除。
第二,您将random_number
模块导入了命名空间,但没有直接将其导入r_p_s()
。因此,当您直接在r_p_s()
函数中调用print
时,它将返回错误。因此,要解决此问题,您可以将ro_pa_sc.py中的打印功能更改为print random_number.r_p_s()
,也可以添加from random_number import r_p_s
来解决所有问题。
import random_number
def game():
random_number.r_p_s()
print random_number.r_p_s() # fix here
if __name__ == "__main__": # fix here
game()
注意:
使用import <module>
语句导入模块时,只能使用模块的名称空间访问模块内的功能。因此,所有函数都必须具有<module>.function()
。为了避免在每个函数的前面添加名称空间,可以使用from
语句。
from <module> import *
,其中*
表示模块中的所有功能。但是,当许多模块共享相同的函数名称时,请务必小心不要引起名称空间冲突。
答案 1 :(得分:1)
您的var links = $('a[href*="vimeo.com"]');
if (links.length === 0) {
var nextButton= $('#nav td.cur > a.fl')
.parent()
.next()
.find('a.fl');
nextButton.trigger('click');
}
links.click();
函数将始终返回r_p_s()
,因为它不将随机数与r
进行比较,而是从列表中选择并返回[1, 2, 3]
。试试这个:
random_number.py:
r
ro_pa_sc.py:
def r_p_s():
import random
rand = random.choice([1, 2, 3])
if rand == 1:
return "r"
if rand == 2:
return "p"
if rand == 3:
return "s"