我试图在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"得到一个"功能滚动。或者我会得到一些没有定义的回复。
如何解决这个问题?
答案 0 :(得分:0)
您正在定义一个函数,但没有调用它?在程序底部添加以下行:
roll(d20)
不要在内部调用您的函数。这导致无限递归。
你需要的是这样的东西:
...
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>
。