![](/img/trans.png)
[英]I'm trying something new with python but isn't working, can anyone help me figure out why the function only prints data[0]?
[英]function names() and function testCraps() aren't working correctly. Can anyone figure out why?
我试图将两个功能放在一起,但我终生无法弄清楚自己做错了什么。
函数names()应该反复要求用户输入名称。 当用户停止输入名称时,程序应打印输入每个名称的次数。 这就是到目前为止。
def names(): counter={} name=input('Enter next name:') while name!='': if name in counter: counter[name]+=1 else: counter[name]=1 name=input('Enter next name:') for name in counter: if counter[name]>1: print('There are {1} students named {2}.'.format(counter[name], name)) else: print('There is {1} student named {2}.'.format(counter[name], name))
直到我停止输入名称之前,它都会起作用。 到那时,它只是给了我一个语法错误,指出“解析时出现意外的EOF”。 有人知道我需要解决什么吗?
函数testCraps()应该采用正整数n作为输入,并模拟骰子游戏的掷骰子的n个游戏。 然后,应在n次掷骰子游戏之后返回用户的获胜率。 在这里,我有:
def craps(): import random dice=random.randrange(1,7)+random.randrange(1,7) if dice in (7,11): return 1 elif dice in (2,3,12): return 0 else: newRoll=random.randrange(1,7)+random.randrange(1,7) while newRoll not in (7,dice): newRoll=random.randrange(1,7)+random.randrange(1,7) if newRoll==dice: return 1 else: return 0 def testCraps(n): count=0 for i in range(n): if craps()==1: count+=1 return count/n
由于某些原因,testCraps()似乎总是给我0,而我看不到任何问题。 你能看到我想念的东西吗?
names()
的问题在于,在格式化字符串时,应从{0}
而不是{1}
开始索引。 纠正此问题和缩进后,它可以正常工作:
def names():
counter={}
name=input('Enter next name:')
while name!='':
if name in counter:
counter[name]+=1
else:
counter[name]=1
name=input('Enter next name:')
for name in counter:
if counter[name]>1:
print('There are {0} students named {1}.'.format(counter[name], name))
else:
print('There is {0} student named {1}.'.format(counter[name], name))
names()
互动环节:
Enter next name:Galax
Enter next name:Test
Enter next name:Galax
Enter next name:
There is 1 student named Test.
There are 2 students named Galax.
这是胡扯的代码,其中的缩进固定,并且在上面的注释之一中建议进行强制转换:
def craps():
import random
dice=random.randrange(1,7)+random.randrange(1,7)
if dice in (7,11):
return 1
elif dice in (2,3,12):
return 0
else:
newRoll=random.randrange(1,7)+random.randrange(1,7)
while newRoll not in (7,dice):
newRoll=random.randrange(1,7)+random.randrange(1,7)
if newRoll==dice:
return 1
else:
return 0
def testCraps(n):
count=0
for i in range(n):
if craps()==1:
count+=1
return float(count)/n
print(testCraps(100))
样本输出:
0.44
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.