编写一个Python函数,该函数将接收一个列表作为参数,并在列表重复任何数字时计数

2024-09-24 10:27:53 发布

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

我只是需要一些帮助来回答这个问题。所有细节都在下面提到的问题中。我已经做了一个解决方案,但我有点坚持这一点,真的很感谢有人能引导我到正确的方向。你知道吗

问题:每当我运行程序时,它总是说“youhave:three5”,即使重复三次的数字不是5。希望这是有道理的。我的程序在问题下面。你知道吗

上面的网格可以用Python表示为一个列表变量,比如grid = [2,2,1,3,2]

编写一个Python函数pokietest(list),它将接收一个列表作为参数

如果列表中的数字是3,5,则为4,5

它将返回一个包含2项的列表:

o The first item will be the number of repeated numbers
o The second item will be the value of repeated numbers

编写一个Python函数makeList(),该函数没有参数,返回一个由5个随机整数组成的列表(介于1和5之间,包括1和5)

将你的函数组合成一个程序,显示适当的文本,说明用户是赢了还是输了。你知道吗

(如果没有3、4或5个相同的数字,则会失败。)

例如: 你赢了!或者抱歉你输了

如果他们赢了,它应该显示有多少重复的数字和他们的价值。你知道吗

例如:

你赢了!你有三个2

你知道吗====== 这是我的程序=====

import random

def pokieTester(countList):

    count = countList.count(0)

    for num in [1,2,3,4,5]:
        if count < 3:
            count = countList.count(num)
    demoList = [count, num]        
    return demoList


def makeList():

    numList = []

    for count in [0,1,2,3,4]:
        a = random.randint(1,5)
        numList.append(a)
    return numList

gameList = makeList()

print (gameList)

matches = pokieTester(gameList)

count = matches[0]

num = matches[1]


num_List = ['three','four','five']

if count > 2:

        print ("You win")
        print ("You have: " , end = '' )

        if count == 3:
           print (num_List[0], num, end = '')

        elif count == 4:
           print (num_List[1], num, end ='')

        elif count == 5:
           print (num_List[2], num, end ='')

else:

    print ("Sorry, You lose")

Tags: 函数程序列表ifcount数字numlist
3条回答
import random

randlist = [random.randint(1,5) for i in range(5)]

def pokieTest(randlist):
    num_List = {3: 'three', 4: 'four', 5: 'five'}
    for i in randlist:
        count = randlist.count(i)
        if count in num_List.keys():
            return [num_List[count], i]


print randlist

result = pokieTest(randlist)

if result:
    print "You win!"
    print "You have: ", result
else:
    print "Sorry, you lose"
import random
from collections import Counter
from operator import itemgetter

numerals = ('one', 'two', 'three', 'four', 'five')

numbers = [random.randint(1, 5) for x in range(5)]
print(numbers)

matche = max(Counter(numbers).items(), key=itemgetter(1))
count = matche[1]
number = matche[0]

if count > 2:
        print("You win!\nYou have: {} {}".format(numerals[count-1], number))
else:
    print("Sorry, You lose")

pokieTester()中,for循环的末尾num将始终是5,因为循环总是执行5次。如果检测到count>;=3,则需要尽早跳出循环。试试这个:

def pokieTester(countList):
    for num in [1,2,3,4,5]:
        count = countList.count(num)
        if count >= 3:
            # there are 3, 4 or 5 instances of num
            return [count, num]
    return [0, 0]

如果任何数字中没有3个或3个以上,那么这个规范的返回值应该是多少,所以上面的函数只返回[0, 0],但是可以说它可以返回None。你知道吗

调用代码可以通过使用字典而不是listnum_List来简化。然后可以使用count作为键检索数字的文本版本:

num_text = {3: 'three', 4: 'four', 5: 'five'}
count, num = pokieTester(gameList)
if count >= 3:
    print("You win")
    print("You have: {} {} s".format(num_text[count], num)

相关问题 更多 >