2016-07-26 47 views
0

我是崭新的python,因为我的新学校需要它。我习惯于C++,所以我仍然在学习绳索。我试图做一个骰子滚动模拟器,我以为我做的一切正确,但我的代码不会工作。任何提示或指导,以帮助我学习将不胜感激。这里是我的代码:Python 3骰子模拟问题

import random 

def roll(sides=6): 
    num_rolled = random.randint(l,sides) 
    return num_rolled 

def main(): 
    sides = 6 
    rolling = True 
    while rolling: 
     roll_again = input("Ready to roll? ENTER=Roll. Q=Quit. ") 
    if roll_again.lower() != "q": 
     num_rolled = roll(sides) 
     print("You rolled a", num_rolled) 
    else: 
     rolling = False 

    print("Thanks for playing!") 

main() 

这是我的错误:

Traceback (most recent call last): File "C:\Users\nomor\AppData\Local\Programs\Python\Python35-32\DiceRollingSim.py", line 20, in main() File "C:\Users\nomor\AppData\Local\Programs\Python\Python35-32\DiceRollingSim.py", line 13, in main num_rolled = roll(sides) File "C:\Users\nomor\AppData\Local\Programs\Python\Python35-32\DiceRollingSim.py", line 4, in roll num_rolled = random.randint(l,sides) NameError: name 'l' is not defined

+0

有什么问题吗?什么不行? – Pythonista

+0

我不知道,但这是我得到的错误:Traceback(最近调用最后一次): 文件“C:\ Users \ nomor \ AppData \ Local \ Programs \ Python \ Python35-32 \ DiceRollingSim.py”,行20,在 主() 文件 “C:\用户\ nomor \应用程序数据\本地\程序\的Python \ Python35-32 \ DiceRollingSim.py”,线13,在主 num_rolled =辊(边) 文件“ C:\ Users \ nomor \ AppData \ Local \ Programs \ Python \ Python35-32 \ DiceRollingSim.py“,第4行,卷 num_rolled = random.randint(l,sides) NameError:name'l'is not defined – BradeyBunch

回答

1

对于第一个问题...

num_rolled = random.randint(l,sides) 

l != 1。你把一个“l”而不是数字1. Python认为这是一个你没有定义的变量 - >你得到的错误。

documentation randint需要两个整数作为参数:

random.randint(a, b) Return a random integer N such that a <= N <= b. Alias for randrange(a, b+1).

接下来,看看在你的这几行代码。

while rolling: 
    roll_again = input("Ready to roll? ENTER=Roll. Q=Quit. ") 
if roll_again.lower() != "q": 
    num_rolled = roll(sides) 
    print("You rolled a", num_rolled) 
else: 
    rolling = False 

if-else部分需要while循环的内部缩进:

while rolling: 
    roll_again = input("Ready to roll? ENTER=Roll. Q=Quit. ") 
    if roll_again.lower() != "q": 
     num_rolled = roll(sides) 
     print("You rolled a", num_rolled) 
    else: 
     rolling = False 
+1

非常感谢。菜鸟错了吧?这实际上帮了很大忙。 – BradeyBunch

+0

没问题,很高兴我可以帮忙!我们都在某些时候犯了新人的错误:D – Pythonista