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

时间:2017-08-26 12:02:44

标签: python python-3.x printing

我试图在Roll20.net上构建一个独立的应用程序,比如骰子滚轮,从简单开始,随着我变得更好,我可以添加更多功能,包括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"得到一个"功能滚动。或者我会得到一些没有定义的回复。

如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

  1. 您正在定义一个函数,但没有调用它?在程序底部添加以下行:

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

  3. 你需要的是这样的东西:

    ...
    
    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
    

答案 1 :(得分:0)

试试

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(""),则不需要<form [formGroup]="form" (ngSubmit)="onSubmit()"> <div formArrayName="cities"> <div *ngFor="let city of cities.controls; let i=index"> <select [formControlName]="i"> <option *ngFor="let itemname of myCities" [value]='itemname' > {{ itemname }} </option> </select> </div> </div> <br> <button>Submit</button> </form> <br> <button (click)="addCity()">Add City</button> <button (click)="remove(i)">Remove City</button>