我的任务是编写一个程序,要求用户输入它存储在列表中的5个名称。接下来,它随机选择其中一个名称并宣布该人为胜利者。唯一的问题是,当我尝试运行它时,它会显示can't assign to literal
。
这是我的代码:
import random
1=input("Please enter name 1:")
2=int(input('Please enter name 2:'))
3=int(input('Please enter name 3:'))
4=int(input('Please enter name 4:'))
5=int(input('Please enter name 5:'))
name=random.randint(1,6)
print('Well done '+str(name)+'. You are the winner!')
我必须能够生成随机名称。
答案 0 :(得分:20)
=
运算符的左侧需要是变量。你在这里做的是告诉python:“你知道第一个吗?把它设置为输入的字符串。” 1
是一个字面数字,而不是变量。 1
始终为1
,您无法将其“设置”为其他内容。
变量就像一个可以存储值的框。 1
是可以存储在变量中的值。 input
调用返回一个字符串,另一个值可以存储在变量中。
相反,请使用lists:
import random
namelist = []
namelist.append(input("Please enter name 1:")) #Stored in namelist[0]
namelist.append(input('Please enter name 2:')) #Stored in namelist[1]
namelist.append(input('Please enter name 3:')) #Stored in namelist[2]
namelist.append(input('Please enter name 4:')) #Stored in namelist[3]
namelist.append(input('Please enter name 5:')) #Stored in namelist[4]
nameindex = random.randint(0, 5)
print('Well done {}. You are the winner!'.format(namelist[nameindex]))
使用for循环,你可以减少更多:
import random
namecount = 5
namelist=[]
for i in range(0, namecount):
namelist.append(input("Please enter name %s:" % (i+1))) #Stored in namelist[i]
nameindex = random.randint(0, namecount)
print('Well done {}. You are the winner!'.format(namelist[nameindex]))
答案 1 :(得分:9)
添加另外一个可能会产生相同错误的方案:
如果您尝试将值分配给多个变量,那么您也会收到相同的错误。例如,
在C(和许多其他语言)中,这是可能的:
int a =2, b=3;
在Python中:
a= 2, b= 5
会给"不能分配到文字"错误
答案 2 :(得分:6)
您正尝试分配文字整数值。 1
,2
等不是有效名称;它们只是有效的整数:
>>> 1
1
>>> 1 = 'something'
File "<stdin>", line 1
SyntaxError: can't assign to literal
您可能想要使用列表或字典:
names = []
for i in range(1, 6):
name = input("Please enter name {}:".format(i))
names.append(name)
使用列表可以更容易地选择随机值:
winner = random.choice(names)
print('Well done {}. You are the winner!'.format(winner))
答案 3 :(得分:4)
1,2,3,...是python中的无效标识符,因为首先它们是整数对象,其次在python中,变量名不能以数字开头。
>>> 1 = 12 #you can't assign to an integer
File "<ipython-input-177-30a62b7248f1>", line 1
SyntaxError: can't assign to literal
>>> 1a = 12 #1a is an invalid variable name
File "<ipython-input-176-f818ca46b7dc>", line 1
1a = 12
^
SyntaxError: invalid syntax
identifier ::= (letter|"_") (letter | digit | "_")*
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9"
答案 4 :(得分:4)
1
是一个文字。 name = value
是一项任务。 1 = value
是对文字的赋值,这没有任何意义。为什么您希望1
表示1
以外的其他内容?
答案 5 :(得分:3)
这取自Python文档:
Identifiers (also referred to as names) are described by the following lexical definitions:
identifier ::= (letter|"_") (letter | digit | "_")*
letter ::= lowercase | uppercase
lowercase ::= "a"..."z"
uppercase ::= "A"..."Z"
digit ::= "0"..."9"
Identifiers are unlimited in length. Case is significant.
这应解释如何命名变量。
答案 6 :(得分:2)
我遇到了同样的错误: SyntaxError:当我试图在一行中分配多个变量时,无法将其分配给文字。
我正在按如下所示分配值:
score = 0, isDuplicate = None
当我将它们移到另一行时,它得到解决:
score = 0
isDuplicate = None
我不知道为什么python不允许在同一行上进行多次分配,但这是完成的方式。
还有另一种方法可以单行显示它。用分号代替逗号分隔它们。检查以下代码:
score = 0 ; duplicate = None
答案 7 :(得分:0)
import random
one = input("Please enter name one:")
two = input('Please enter name two:')
three = input('Please enter name three:')
four = input('Please enter name four:')
five =input('Please enter name five:')
name=random.randint(1,5)
name = str(name)
if name == "1":
name = one
print('Well done '+ name +'. You are the winner!')
elif name == "2":
name = two
print('Well done '+ name +'. You are the winner!')
elif name == "3":
name = three
print('Well done '+ name +'. You are the winner!')
elif name == "4":
name = four
print('Well done '+ name +'. You are the winner!')
else:
name = five
print('Well done '+ name +'. You are the winner!')
答案 8 :(得分:-1)
您应该使用变量来存储名称。
Numbers无法存储字符串。