Python中用stdin、stdout计算a^b+c^d报错,求修正方案
问题:读取四行整数计算a^b + c^d的值
需求:读取四个分别位于不同行的整数a、b、c、d,计算并输出
a^b + c^d的值,输入示例为:3 5 7 9用户尝试的Python代码(无法正常运行):
import sys y=[] for x in sys.stdin: y=sys.stdout.write(x) print(y[0]**y[1]+y[2]**y[3])]
原代码的错误点
- 错误将
sys.stdout.write(x)的返回值赋值给y:sys.stdout.write()返回的是写入的字符数(整数),不是输入内容,导致后续无法通过索引访问元素 - 循环逻辑错误:每次循环就立即计算,但此时还没收集到四个输入值
- 存在语法错误:代码末尾多了一个多余的
] - 未转换输入类型:输入的内容是字符串,直接进行幂运算会报错
正确实现方法
方法一:使用sys.stdin批量读取输入
import sys # 读取前4行输入,去除换行符后转换为整数 nums = [int(line.strip()) for line in sys.stdin.readlines()[:4]] a, b, c, d = nums # 计算结果并输出到stdout print(a ** b + c ** d)
方法二:用input()逐个读取输入(更简洁)
# 逐个读取四行输入并转换为整数 a = int(input()) b = int(input()) c = int(input()) d = int(input()) # 计算并输出结果 print(a ** b + c ** d)
两种方法最终都会将计算结果输出到标准输出(stdout),对应输入示例的输出为40353850(即3^5 +7^9 = 243 + 40353607)。
内容的提问来源于stack exchange,提问作者sampath meda
相关产品推荐
相关产品推荐

