2017-02-14 111 views
2

我是一个Python新手,我遇到了一个脚本的麻烦。脚本的一点是要创建一个滚动的随机数1和6之间的脚本看起来像这样的骰子:Python骰子脚本失败

import random 
while True: 
    roll = input("Wanna roll? y/n: ").strip().lower() 
    if roll == "y": 
     dice = random.randint(1,6) 
     print(dice) 
    else: 
     again = input("How about now? y/n: ").strip().lower() 
     if again == "y": 
      dice = random.randint(1,6) 
      print(dice) 
     else: 
      print(again) 

所以这是代码。理想情况下,我想要发生的事情是Python要求“想要滚动?”如果用户输入“y”,Python应该返回1到6之间的一个随机数。这个位工作正常。

但是,如果用户键入“n”,我希望Python问“现在怎么样?”如果用户键入“y”,那么我希望Python返回1到6之间的随机数。这个位也可以正常工作。

我遇到问题的地方是当用户输入“n”表示问题“想要滚动?”时。并且还为第二个问题“现在怎么样?”键入“n”。程序应该不断询问用户“现在怎么样?”一遍又一遍,直到他最终破解并键入“y”(此时Python给他一个1到6之间的随机数)。然而,Python会返回这个结果:

n 
How about now? y/n: 

所以它会打印用户的答案(“n”)以及再次提出问题。

我不知道如何让Python重新提出问题“现在怎么样?”也没有给出用户输入的答案。

道歉,如果这是一个明显的问题和/或如果格式不正确/不清楚。我只待了几个星期。

在此先感谢!

编辑:脚本的预期的行为是这样的:

“?想滚Y/N:”

“现在怎么样Y/N?”

“怎么样?现在Y/N:“

”现在怎么样Y/N:??“

,并依此类推,直到用户回答这个问题: ”现在怎么样“用“y”代替“n”,此时Python应该返回一个介于1和6之间的数字,然后询问用户是否想再次滚动。

编辑2:代码中有错误。当我打算输入.strip()时,我把.script() - 对不起。这不是我的问题的根源,因为当我最初编写脚本时,我确实做到了。抱歉:-(

+0

什么是预期的行为?可你把它的问题正如你在标准输出中所期望的那样 –

+0

你使用的是什么版本的Python?由于'.script()'的使用,我得到了2.7和3.5的崩溃,这是我以前从未遇到过的。 – asongtoruin

+0

对不起,我的意思是写.strip()我现在修好了。 – Nellington

回答

1

这个怎么样?

import random 
while True: 
    roll = input("Wanna roll? y/n: ").strip().lower() 
    while roll != "y": 
     roll = input("How about now? y/n: ").strip().lower() 

    dice = random.randint(1,6) 
    print(dice) 

它会不断地问用户的输入,直到他们回复y

+0

看起来不错。非常感谢:-) – Nellington

+0

@Nellington不用担心 - 如果它解决了您的问题,答案的左上角会出现一个绿色的勾号,您可以用它来标记为答案。 – asongtoruin