程序运行,但打印时不产生输出

2024-10-03 00:17:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图在Roll20.net上构建一个像dice roller这样的独立应用程序,一开始很简单,随着我越来越好,我可以添加更多的功能,包括一个GUI,但是在几个月前放弃之后,回到这个项目,我仍然无法获得甚至输出的最基本的表单。你知道吗

import random
from random import randint

d20 = randint(1,20)

str1 = "You rolled a "
str2 = "Congrats Critical Hit"
str3 = "Uh Oh, Critical Fail"

def roll(d20):
    roll(d20)
    print (str1 + roll(d20))

    if (d20 == 1):
        print (str3)

    elif (d20 == 20):
        print (str3)

    else:
        print ("")

我要么得到一个完全空白的输出,意味着程序在技术上运行,要么得到一个“0x02A3B078的函数roll”,要么得到一个没有定义的响应。你知道吗

如何解决这个问题?你知道吗


Tags: import应用程序netrandomrollerdiceprintroll
2条回答
  1. 你在定义一个函数,却没有调用它?在程序底部添加以下行:

    roll(d20)
    
  2. 不要在函数内部调用它。这会导致无限递归。


你需要的是这样的东西:

...

def roll(d20):
    print(str1, d20)

    if d20 == 1:
        print(str3)    
    elif d20 == 20:
        print(str3)

roll(d20)

你想让你的程序具有交互性吗?您可以初始化一个while循环并在用户感兴趣的时候重复。你知道吗

while True:
    d20 = randint(1, 20)
    roll(d20)

    if input('Keep playing? ') not in {'y', 'Y'}:
        break

试试看

import random
from random import randint

str1 = "You rolled a "
str2 = "Congrats Critical Hit"
str3 = "Uh Oh, Critical Fail"

def roll(d20):

    print (str1 + str(d20))

    if (d20 == 1):
        print (str3)

    elif (d20 == 20):
        print (str3)


num_of_rolls = 10    
while num_of_rolls:
    d20 = randint(1,20)
    roll(d20)
    num_of_rolls -= 1

一些你将来可能会考虑的事情。你没有调用函数。它有时不打印输出,因为它有18:20的机会print("")。你不应该从(1,20)范围开始。测试(1,2)并将print语句放在任何地方。这是确定函数内部发生了什么的唯一方法。如果你不需要它,你不需要print("")。你知道吗

相关问题 更多 >