2 回答

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個(gè)贊
我有這段代碼可以正常工作,但有一個(gè)小問(wèn)題。第一個(gè)選擇函數(shù)運(yùn)行良好并返回問(wèn)題中的隨機(jī)狀態(tài)。如果答案是肯定的,它就可以正常工作并打印出我想要的東西。但是當(dāng)答案是否定的時(shí)候,我希望這個(gè)問(wèn)題有一個(gè)不同的州名。但是第二個(gè)選擇函數(shù),在while循環(huán)下,返回與第一個(gè)問(wèn)題相同的狀態(tài)。我認(rèn)為選擇的另一種用法會(huì)返回另一個(gè)隨機(jī)狀態(tài)名稱,但顯然,事實(shí)并非如此。
這是代碼:
from random import choice
states = {
'AK': 'Alaska',
'AL': 'Alabama',
'AR': 'Arkansas',
'AS': 'American Samoa',
'AZ': 'Arizona',
'CA': 'California',
'CO': 'Colorado',
'CT': 'Connecticut',
'DC': 'District of Columbia',
'DE': 'Delaware',
'FL': 'Florida',
'GA': 'Georgia',
'GU': 'Guam',
'HI': 'Hawaii',
'IA': 'Iowa',
'ID': 'Idaho',
'IL': 'Illinois',
'IN': 'Indiana',
'KS': 'Kansas',
'KY': 'Kentucky',
'LA': 'Louisiana',
'MD': 'Maryland',
'MA': 'Massachusetts',
'ME': 'Maine',
'MI': 'Michigan',
'MN': 'Minnesota',
'MO': 'Missouri',
'MP': 'Northern Mariana Islands',
'MS': 'Mississippi',
'MT': 'Montana',
'NA': 'National',
'NC': 'North Carolina',
'ND': 'North Dakota',
'NE': 'Nebraska',
'NH': 'New Hampshire',
'NJ': 'New Jersey',
'NM': 'New Mexico',
'NV': 'Nevada',
'NY': 'New York',
'OH': 'Ohio',
'OK': 'Oklahoma',
'OR': 'Oregon',
'PA': 'Pennsylvania',
'PR': 'Puerto Rico',
'RI': 'Rhode Island',
'SC': 'South Carolina',
'SD': 'South Dakota',
'TN': 'Tennessee',
'TX': 'Texas',
'UT': 'Utah',
'VA': 'Virginia',
'VI': 'Virgin Islands',
'VT': 'Vermont',
'WA': 'Washington',
'WI': 'Wisconsin',
'WV': 'West Virginia',
'WY': 'Wyoming'
}
state_list = list(states.values())
choice = choice(state_list)
question = "Would you like to move to {}?: ".format(choice)
answer = input(question).strip().lower()
while answer!= "yes":
question = "Okay. How about {}?: ".format(choice)
answer = input(question).strip().lower()
print("Sounds good! Let's go there!")

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
解釋
你的問(wèn)題是你從 state_list 中找到 random
choice = choice(state_list)
并且您將 is 視為函數(shù) -> 您認(rèn)為無(wú)論何時(shí)使用它,它都會(huì)生成隨機(jī)選擇。不。 Choice 是一個(gè)變量,您在其中從 state_list 中保存了隨機(jī)數(shù)。在您的循環(huán)中,您基本上是在調(diào)用選擇,它只不過(guò)是保存的變量。
但是,您可以創(chuàng)建函數(shù) generate_choice() 來(lái)執(zhí)行您想要的操作
import random
def generate_choice():
return random.choice(state_list)
所以現(xiàn)在你可以隨時(shí)打電話
new_choice = generate_choice()
從 state_list 獲取新的隨機(jī)元素
你也犯了很大的錯(cuò)誤
choice = choice(state_list)
因?yàn)槟闫茐牧四銓?dǎo)入的函數(shù)選擇,你把這個(gè)函數(shù)的結(jié)果代替了這個(gè)函數(shù),所以現(xiàn)在你不能再調(diào)用它了。
解決方案
...
#
#choice = choice(state_list) <-- here you destroyed your function
# instead import module like this:
import random
choice = random.choice(state_list) <--- now you are save
question = "Would you like to move to {}?: ".format(choice)
answer = input(question).strip().lower()
while answer!= "yes":
question = "Okay. How about {}?: ".format(random.choice(state_list)) # generate choice everytime new
answer = input(question).strip().lower()
print("Sounds good! Let's go there!")
添加回答
舉報(bào)