1. ホーム
  2. python

[解決済み] Python: リテラルに代入できない

2022-02-17 12:25:19

質問

私の仕事は、ユーザーに5つの名前を入力させ、それをリストに保存するプログラムを書くことです。次に、これらの名前の中からランダムに1人を選び、その人を勝者として宣言します。唯一の問題は、プログラムを実行しようとすると、次のように表示されることです。 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!')

ランダムな名前を生成できるようにしなければならない。

どのように解決するのですか?

の左側は = 演算子は変数である必要があります。ここでやっていることは、pythonに次のように伝えているのです: "数字の1を知っていますか?入力された文字列にそれをセットしてください。 1 はリテラルな数値であり、変数ではありません。 1 は常に 1 他のものに設定することはできません。

変数とは、値を格納する箱のようなものです。 1 は変数に格納できる値です。その input の呼び出しは、変数に格納することができる別の値である文字列を返します。

代わりに リスト :

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]))