继续获取 ValueError: invalid literal for int() with base 10: '1, 7'

Posted

技术标签:

【中文标题】继续获取 ValueError: invalid literal for int() with base 10: \'1, 7\'【英文标题】:Keep on getting ValueError: invalid literal for int() with base 10: '1, 7'继续获取 ValueError: invalid literal for int() with base 10: '1, 7' 【发布时间】:2022-01-09 08:27:49 【问题描述】:

我正在尝试制作一个类似刽子手的游戏,但是当我运行我目前拥有的这段代码时,我不断收到错误,我尝试制作新变量,例如 int1 和 int2 但无济于事。代码如下:

from nltk.corpus import words
import random

word_list = words.words()
password = random.choice(word_list)
finish = len(password)

print("The password has", len(password),"letters")
print(password)

while finish > 0:
    
    guess = input("Please enter a letter to see where it is in the word:  ")
    occur = password.count(guess)
    
    mylist = ', '.join([str(i) for i, c in enumerate(password) if c == guess])
    print(mylist)

    int1 = [int(y) for y in mylist]

    int2 = [x+1 for x in mylist]
    print(ints)

    if len(guess) > 1 or len(guess) < 1:
        print("Enter 1 standard keyboard letter to see if it is in the word")
    
    elif guess in password:
         print(f"This letter is at position ', '.join([str(i) for i, c in enumerate(password) if c == guess]) in the word")
         finish = finish - occur
         password = password.replace(guess,'.')
         print("Only", finish, "letters left to guess")
         
    else:
        print("Try again")

我希望第 16-22 行首先将列表中的元素从字符串转换为整数,然后打印出列表,然后再次打印出相同的列表,但将 1 添加到列表的每个元素. 这是我不断收到的错误:

Traceback (most recent call last):
  File "/Users/ARR2K18/Desktop/Hangman.py", line 29, in <module>
    int1 = [int(y) for y in mylist]
  File "/Users/ARR2K18/Desktop/Hangman.py", line 29, in <listcomp>
    int1 = [int(y) for y in mylist]
ValueError: invalid literal for int() with base 10: '1, 7'

需要帮助

【问题讨论】:

【参考方案1】:

您的问题在这里:

mylist = ', '.join([...])
print(mylist)

int1 = [int(y) for y in mylist]

', '.join(...) 会给你一个类似“1, 7”的结果,而这个集合看起来像"1, 7", "3, 4", ... 。然后,当您在其中一个 set 元素上调用 int() 时,您会收到显示的错误。

解决此问题的方法可能是简单地放弃 join 调用并单独使用列表推导。

【讨论】:

可能是真的,但 OP 的代码有多个问题。 int1int2 被计算并且从未使用过(如果列表元素是字符串,int2 的计算也会中断)。然后尝试打印ints,但从未定义。并且错误信息中的行号与问题中的代码不符。 是的,我有点忽略了行号,因为我认为它们是关闭的。当然还有其他问题,但这应该解决他引用的错误。

以上是关于继续获取 ValueError: invalid literal for int() with base 10: '1, 7'的主要内容,如果未能解决你的问题,请参考以下文章

请问这段python代码哪里出错了,错误代码:ValueError: invalid literal for int() with base 10: ','?

ValueError: Invalid \escape: 当在 Scrapy 中读取 json 作为响应时

ValueError: Invalid leaf XXX

Keras model.load_weights() error: ValueError: Invalid high library version bound (invalid high libra

Python中ValueError: invalid literal for int() with base 10 的实用解决办法

继续在 nvidia gpu 上获取 CL_INVALID_KERNEL_ARGS