gpt4 book ai didi

Python:尝试将字符串转换为 int,对于以 10 为基数的 int(),出现 int 无效文字错误: ''

转载 作者:太空宇宙 更新时间:2023-11-03 17:30:09 25 4
gpt4 key购买 nike

我是 Python 新手,所以如果这是一个简单的修复,我深表歉意。我已经被 Codeval 问题(Happy Numbers)困扰很长一段时间了,我不确定出了什么问题。

问题描述:

从任意正整数开始,用该数字的各位数字的平方和替换该数字,并重复该过程,直到该数字等于 1,或者在不包含 1 的循环中无限循环。以 1 结尾的进程是快乐的,而不以 1 结尾的进程是不快乐的。

例如:

7是一个快乐的数字(7->49->97->130->10->1)

22不是一个快乐的数字(22->8->64->52->29->85->89->145->42->20->4->16->37->58 ->89 ...)

我的测试输入和预期结果:

1 --> 1

7 --> 1

22 --> 0

如果该数字是快乐数字,则打印出 1。如果不是,则打印出 0。

这是完整的回溯:

Traceback (most recent call last):
File "/happy_number.py", line 58, in <module>
happy_number_check("happy_numbers.txt")
File "/happy_number.py", line 55, in happy_number_check
happy_or_not(line)
File "/happy_number.py", line 33, in happy_or_not
i = int(i)
ValueError: invalid literal for int() with base 10: ''

这是我的代码:

# test = 7


def happy_or_not(number):
number = str(number)
if number == 1:
print 1
else:
new_num = 0
for i in number:
i = int(i)
if i == " ":
continue
else:
new_num += i**2
if new_num == 10 or new_num == 10:
print 1
else:
try:
happy_or_not(new_num)
except RuntimeError:
print 0

# happy_or_not(test)


def happy_number_check(file):
f = open(file, 'r+')
for line in f:
if line == "":
continue
else:
happy_or_not(line)


happy_number_check("happy_numbers.txt")

我已经尝试过的:

根据我从其他类似问题中收集到的信息,问题可能是当我点击 行时,我无法将 str 转换为 int >i = int(i)。据我了解,在对其进行任何数学运算之前,我必须将 str 类型转换为 int 类型,但看起来这就是它失败的地方。

我单独测试了 happy_or_not 函数,它确实打印出了我期望的值。在我看来,当我尝试在 happy_number_check 函数内部调用 happy_or_not 函数时,问题就出现了,该函数正在读取我的 txt 文件(包含要读取的数字列表)测试)。我在这里一定没有掌握更大的原则,所以任何解释都会有帮助。

这也是我第一次真正尝试递归函数,可能有更好的方法来构建它,因此非常欢迎任何有关如何改变事物以使其更有效的建议。

提前谢谢您!

最佳答案

尝试像这样更改happy_number_check(验证每一行都是整数):

def happy_number_check(file):
with open(file, 'r+') as f: # Safer way to open a file. Will automatically close for you even if something goes wrong
for line in f:
if line.strip().isdigit():
happy_or_not(line.strip())

strip() 也会这样做,以便您可以删除此代码:

if i == " ":
continue
else:

顺便说一句,你的逻辑也有问题。您依靠 RuntimeError - 有趣的是堆栈溢出:-) - 来终止测试。您确实应该跟踪已尝试过的数字,如果再次尝试相同的数字,则返回 0。

如果您不想直接解决问题,请不要单击此链接,但如果您需要,这里有一个迭代解决方案:http://rosettacode.org/wiki/Happy_numbers#Python

关于Python:尝试将字符串转换为 int,对于以 10 为基数的 int(),出现 int 无效文字错误: '',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com