当用户输入可能为假时,为什么我的 while 循环会重复为真?
Why does my while loop repeat true when the user's input can be false?
我有 2 个包含国家及其首都的列表,我使用 zip 函数将它们分配给彼此。我的程序从列表中随机选择一个国家,我要求用户输入显示的国家/地区的首都。
import random
x = random.randrange(5)
country_names = ['Germany', 'Italy', 'Netherlands', 'France', 'Albania', 'Canada']
capital_list = ['Berlin', 'Rome', 'Amsterdam', 'Paris', 'Tirana', 'Ottawa']
dictionary_list = [ {"COUNTRY": country, "CAPITAL": capital,} for country, capital in
zip(country_names, capital_list, )]
item = random.choice(list(country_names))
print(item)
score = 0
while True:
user_input = input('Name ' + item + "'s" + ' Capital:')
user_input = str(user_input)
answer = False
for i in capital_list:
if user_input == i:
answer = True
if answer:
print("Correct")
score = score + 1
else:
print("Incorrect")
这是一个示例输出:
Albania
Name Albania's Capital: Tirana
Correct
Name Albania's Capital:
阿尔巴尼亚的首都确实是地拉那,但问题是我的程序总是说 'correct' 即使我输入错误的首都。
我的 while 循环如何实际检查我的 dictionary_list 并给出正确或错误的答案?如果我的程序不再说“命名阿尔巴尼亚的首都”,我该如何重复该过程?
这里有多个问题。最重要的是,你有
answer = False
for i in capital_list:
if user_input == i:
answer = True
此代码只查看大写字母列表中的每个大写字母,returns如果用户键入的内容在该列表中,则为真。你不用努力去看看它是否是正确的国家。
更好的数据结构可能是字典,其中键是国家,值是首都:
dictionary_list = [ country: capital for country, capital in zip(...)]
那你可以写
item = random.choice(list(country_names))
expected_answer = dictionary_list[item]
而 只有 正确答案是 expected_answer
这会满足您的要求:
import random
country_names = ['Germany', 'Italy', 'Netherlands', 'France', 'Albania', 'Canada']
capital_list = ['Berlin', 'Rome', 'Amsterdam', 'Paris', 'Tirana', 'Ottawa']
dictionary = dict(zip(country_names, capital_list))
score = 0
while True:
item = random.choice(list(country_names))
print(item)
user_input = input('Name ' + item + "'s capital:")
if dictionary[item] == user_input:
print("Correct")
score = score + 1
else:
print("Incorrect")
我有 2 个包含国家及其首都的列表,我使用 zip 函数将它们分配给彼此。我的程序从列表中随机选择一个国家,我要求用户输入显示的国家/地区的首都。
import random
x = random.randrange(5)
country_names = ['Germany', 'Italy', 'Netherlands', 'France', 'Albania', 'Canada']
capital_list = ['Berlin', 'Rome', 'Amsterdam', 'Paris', 'Tirana', 'Ottawa']
dictionary_list = [ {"COUNTRY": country, "CAPITAL": capital,} for country, capital in
zip(country_names, capital_list, )]
item = random.choice(list(country_names))
print(item)
score = 0
while True:
user_input = input('Name ' + item + "'s" + ' Capital:')
user_input = str(user_input)
answer = False
for i in capital_list:
if user_input == i:
answer = True
if answer:
print("Correct")
score = score + 1
else:
print("Incorrect")
这是一个示例输出:
Albania
Name Albania's Capital: Tirana
Correct
Name Albania's Capital:
阿尔巴尼亚的首都确实是地拉那,但问题是我的程序总是说 'correct' 即使我输入错误的首都。
我的 while 循环如何实际检查我的 dictionary_list 并给出正确或错误的答案?如果我的程序不再说“命名阿尔巴尼亚的首都”,我该如何重复该过程?
这里有多个问题。最重要的是,你有
answer = False
for i in capital_list:
if user_input == i:
answer = True
此代码只查看大写字母列表中的每个大写字母,returns如果用户键入的内容在该列表中,则为真。你不用努力去看看它是否是正确的国家。
更好的数据结构可能是字典,其中键是国家,值是首都:
dictionary_list = [ country: capital for country, capital in zip(...)]
那你可以写
item = random.choice(list(country_names))
expected_answer = dictionary_list[item]
而 只有 正确答案是 expected_answer
这会满足您的要求:
import random
country_names = ['Germany', 'Italy', 'Netherlands', 'France', 'Albania', 'Canada']
capital_list = ['Berlin', 'Rome', 'Amsterdam', 'Paris', 'Tirana', 'Ottawa']
dictionary = dict(zip(country_names, capital_list))
score = 0
while True:
item = random.choice(list(country_names))
print(item)
user_input = input('Name ' + item + "'s capital:")
if dictionary[item] == user_input:
print("Correct")
score = score + 1
else:
print("Incorrect")