【问题标题】:Reading in a single line of integers and performing operations in Python读取单行整数并在 Python 中执行操作
【发布时间】:2020-07-16 05:52:37
【问题描述】:

我可以逐行读取整数,但我不确定如何修改代码,以便在这个问题中读取一行 5 个整数。

爱丽丝发明了一种新的纸牌游戏来和鲍勃一起玩。 Alice 制作了一副随机值介于 1 到 52 之间的牌。Bob 挑选了 5 张牌。然后,他必须重新排列卡片,以便通过使用加、减或乘运算,卡片的价值达到爱丽丝最喜欢的数字。 42. 更精确地找到满足 ((((val1 op1 val2) op2 val3) op3 val4) op4 val) = 42 的运算。通过编写程序帮助 Bob 确定在给定 5 张卡片值的情况下是否可以达到 42。例如,Bob 从一副包含 40、1、3、4 和 20 的牌中挑选出 5 张牌。Bob 重新排列这些牌并提供四个操作,因此 4 * 20 - 40 + 3 - 1 = 42。输入:输入由一行中的五个整数组成,以空格分隔。每个整数都介于 1 和 52 之间,包括 1 和 52,输出:如果根据游戏规则可能达到值 42,则打印包含“YES”的行,否则打印“NO”。 测试输入:40 1 3 4 20 预期输出:YES

我的解决方案,但它逐行读取数字:

import itertools

def Permutations(Lst,size):
    return list(itertools.permutations(Lst,size))

def expression(lst1,lst2):
    for x in lst1:
        for i in lst2:
            op1=i[0]
            op2=i[1]
            op3=i[2]
            op4=i[3]

            str1=str(x[0])+op1+str(x[1])
            str2=str(str1)+op2+str(x[2])
            str3=str(str2)+op3+str(x[3])
            str4=str(str3)+op4+str(x[4])
            exp=eval(str4)

            if(exp==42):
                return True
    return False

Numbers=[]
i=0
while(i<5):
    n=int(input())
    Numbers.append(n)
    i=i+1

NumPermutations=Permutations(Numbers,5)

Operators=['+','-','*','+','-','*']

OpPermutations=Permutations(Operators,4)

Result=expression(NumPermutations,OpPermutations)

if(Result==True):
    print("\nYES")
else:
    print("\nNO")

【问题讨论】:

  • Numbers = list(map(int, input().split()))

标签: python


【解决方案1】:
import itertools

def Permutations(Lst,size):
    return list(itertools.permutations(Lst,size))

def expression(lst1,lst2):
    for x in lst1:
        for i in lst2:
            op1=i[0]
            op2=i[1]
            op3=i[2]
            op4=i[3]
        
            str1=str(x[0])+op1+str(x[1])
            str2=str(str1)+op2+str(x[2])
            str3=str(str2)+op3+str(x[3])
            str4=str(str3)+op4+str(x[4])
            exp=eval(str4)

            if(exp==42):
                return True
    return False

Numbers=[int(i) for i in input().split(" ")] #Change in code here.

NumPermutations=Permutations(Numbers,5)

Operators=['+','-','*','+','-','*']

OpPermutations=Permutations(Operators,4)

Result=expression(NumPermutations,OpPermutations)

if(Result==True):
    print("\nYES")
else:
    print("\nNO")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 2018-01-07
    • 2018-09-08
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多