为了账号安全,请及时绑定邮箱和手机立即绑定

如何让选择函数在while循环下返回不同的结果

如何让选择函数在while循环下返回不同的结果

翻翻过去那场雪 2021-10-26 13:31:16
我有这段代码可以正常工作,但有一个小问题。第一个选择函数运行良好并返回问题中的随机状态。如果答案是肯定的,它就可以正常工作并打印出我想要的东西。但是当答案是否定的时候,我希望这个问题有一个不同的州名。但是第二个选择函数,在while循环下,返回与第一个问题相同的状态。我认为选择的另一种用法会返回另一个随机状态名称,但显然,事实并非如此。这是代码:from random import choicestates = {        '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'}
查看完整描述

2 回答

?
森林海

TA贡献2011条经验 获得超2个赞

我有这段代码可以正常工作,但有一个小问题。第一个选择函数运行良好并返回问题中的随机状态。如果答案是肯定的,它就可以正常工作并打印出我想要的东西。但是当答案是否定的时候,我希望这个问题有一个不同的州名。但是第二个选择函数,在while循环下,返回与第一个问题相同的状态。我认为选择的另一种用法会返回另一个随机状态名称,但显然,事实并非如此。


这是代码:


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!")   



查看完整回答
反对 回复 2021-10-26
?
GCT1015

TA贡献1827条经验 获得超4个赞

解释


你的问题是你从 state_list 中找到 random


choice = choice(state_list)

并且您将 is 视为函数 -> 您认为无论何时使用它,它都会生成随机选择。不。 Choice 是一个变量,您在其中从 state_list 中保存了随机数。在您的循环中,您基本上是在调用选择,它只不过是保存的变量。


但是,您可以创建函数 generate_choice() 来执行您想要的操作


import random

def generate_choice():

    return random.choice(state_list)

所以现在你可以随时打电话


new_choice = generate_choice()

从 state_list 获取新的随机元素


你也犯了很大的错误


choice = choice(state_list)

因为你破坏了你导入的函数选择,你把这个函数的结果代替了这个函数,所以现在你不能再调用它了。


解决方案


...

#

#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!")   


查看完整回答
反对 回复 2021-10-26
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号