【CCF 201903-2】 二十四点(Python 4行代码)

本题主要使用了eval函数,将字符串作为Python的一条语句来执行,达到计算表达式的目的。

题目描述

第一行给出一个正整数N,接下来N行各有一个数学表达式。如果表达式的结果为24点,则输出"Yes",否则输出"No"。

问题分析

本题一般的解法可以使用栈stack进行操作,或者构造表达式树。

这里使用Python的“动态语句”来实现计算表达式的值。

而eval函数达到了这个效果,它以一个字符串作为参数,返回字符串语句执行后的计算结果。

例如,eval("9+3+4*3")将返回24。类似的Python函数还有exec(),读者可以自行了解。

Python eval() 函数 | 菜鸟教程

问题解决

掌握了eval()函数的用法,解决本问显得轻而易举。但仍然有一些需要注意的问题:

①表达式中的乘法符号为小写字母"x",需要将其替换为"*"

②在Python中,"/"表示浮点数除法,"//"才表示整数向下取整,题意为后者

③Python的input()函数返回的是一个字符串,需要手动转化为int类型

④利用Python的三目运算符可以简化代码

实现代码及运行结果

n = int(input())

for i in range(n):
    str = input().replace('x', '*').replace('/', '//')
    print("Yes" if eval(str) == 24 else "No")

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值