鱼C论坛

 找回密码
 立即注册
查看: 1273|回复: 16

[已解决]Python,萌新求助,超简单问题,给鱼币

[复制链接]
发表于 2023-10-11 18:24:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 Menlo 于 2023-10-11 18:45 编辑

  1. counts=5

  2. while counts>0:
  3.     gender=input("what is your gender?")

  4.     if gender.lower()=="boy":
  5.         print("you are a male.")

  6.     if gender.lower()=="girl":
  7.         print("you are a female.")
  8.         counts=counts-1
  9.         
  10.     else:
  11.         print("what do you mean?")
  12.         break
复制代码



不知道到底哪里错了。。
想呈现的状态是
回答boy或者girl时候,一共能循环五次,回答的结果不是boy/girl时候,出现“what do you mean?"然后游戏直接结束。

我目前跑出来的结果是回答girl或者非boy/girl时,结果和我期望的一样。但回复boy时候,会出现
”you are a male."
"what do you mean?"
然后游戏结束。。。

为什么回答boy后出现这种情况呢?怎么改才对呢。。百思不解
最佳答案
2023-10-11 18:25:44
你的代码逻辑有一些小问题,修改后的代码如下:
  1. counts = 5
  2. while counts > 0:
  3.     gender = input("What is your gender? ")
  4.     if gender.lower() == "boy":
  5.         print("You are a male.")
  6.         counts -= 1
  7.     elif gender.lower() == "girl":
  8.         print("You are a female.")
  9.         counts -= 1
  10.     else:
  11.         print("What do you mean?")
  12.         break
复制代码

在原代码中,counts应该在回答正确时减少。因此,在正确的条件语句下,应该将counts -= 1放在if或者elif的内部。此外,需要使用elif来判断是否为"girl",以避免重复执行判断。

修改后的代码将会循环五次,每次要求输入性别,并根据回答给出相应的输出。如果回答不是"boy"或"girl",则会输出"What do you mean?"并结束游戏。

希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-10-11 18:24:30 | 显示全部楼层

回帖奖励 +1 鱼币

你的代码中有一个小错误。在输入不是"boy"或"girl"时,你使用了  break  语句来跳出循环,这将导致循环永远只执行一次。你需要将  break  移动到  else  语句的外面,这样循环才能在计数器减少到0之前正常运行。以下是修改后的代码:

  1. counts = 5

  2. while counts > 0:
  3.     gender = input("what is your gender?")

  4.     if gender.lower() == "boy":
  5.         print("you are a male.")
  6.     elif gender.lower() == "girl":
  7.         print("you are a female.")
  8.     else:
  9.         print("what do you mean?")
  10.         break

  11.     counts -= 1
复制代码


注意,我使用了  elif  语句来检查用户输入的性别是否为 "girl",这样可以避免每次循环都检查两次用户输入。另外,我将计数器的减少移到了循环的末尾,这样可以确保每次循环都会减少计数器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-11 18:24:42 | 显示全部楼层
你的代码逻辑有一点小问题。在你的代码中,你是在每次输入\"boy\"或者\"girl\"后减少计数,而在输入其他内容时直接跳出循环。这样的话,如果输入的是\"boy\"或者\"girl\",程序会正常运行,但是如果输入的不是这两个选项,程序会直接结束,而不是提示\"what do you mean?\"。

你应该将\"else\"语句放在\"if\"语句的外面,这样无论输入什么,只要不是\"boy\"或者\"girl\",就会提示\"what do you mean?\"并结束游戏。这样修改后的代码如下:

  1. counts = 5  
  2. while counts > 0:     
  3.     gender = input("what is your gender?")
  4.     if gender.lower() == "boy":         
  5.         print("you are a male.")  
  6.         counts -= 1
  7.     elif gender.lower() == "girl":         
  8.         print("you are a female.")
  9.         counts -= 1
  10.     else:         
  11.         print("what do you mean?")
  12.         break
复制代码


这样,当输入\"boy\"或者\"girl\"时,会打印相应的消息,并且计数器会减1,当输入其他内容时,会打印\"what do you mean?\"并结束游戏。
请注意,本回答来自GPT-4
如果问题已经解决,请设置最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-11 18:25:44 | 显示全部楼层    本楼为最佳答案   
你的代码逻辑有一些小问题,修改后的代码如下:
  1. counts = 5
  2. while counts > 0:
  3.     gender = input("What is your gender? ")
  4.     if gender.lower() == "boy":
  5.         print("You are a male.")
  6.         counts -= 1
  7.     elif gender.lower() == "girl":
  8.         print("You are a female.")
  9.         counts -= 1
  10.     else:
  11.         print("What do you mean?")
  12.         break
复制代码

在原代码中,counts应该在回答正确时减少。因此,在正确的条件语句下,应该将counts -= 1放在if或者elif的内部。此外,需要使用elif来判断是否为"girl",以避免重复执行判断。

修改后的代码将会循环五次,每次要求输入性别,并根据回答给出相应的输出。如果回答不是"boy"或"girl",则会输出"What do you mean?"并结束游戏。

希望对你有所帮助!如果还有其他问题,请随时提问。

球一个最佳答案谢谢啦!这对我非常重要!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-11 18:34:34 | 显示全部楼层
  1. counts=5

  2. while counts>0:
  3.     gender=input("what is your gender?")

  4.     if gender.lower()=="boy":
  5.         print("you are a male.")
  6.         
  7.     elif gender.lower()=="girl":
  8.         print("you are a female.")        
  9.         
  10.     else:
  11.         print("what do you mean?")
  12.         break
  13.    
  14.     counts=counts-1
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-11 18:42:13 | 显示全部楼层
Mike_python小 发表于 2023-10-11 18:25
你的代码逻辑有一些小问题,修改后的代码如下:

请问,为什么用我的代码在回复boy时候,会出现
”you are a male."
"what do you mean?"
然后游戏结束

呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-11 21:46:38 | 显示全部楼层

回帖奖励 +1 鱼币

因为
  1. gender.lower()=="boy"
复制代码
,所以
  1. print("you are a male.")
  2. print("what do you mean?")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-14 08:09:22 | 显示全部楼层
出现的问题:如果输入 boy  ,第一个 if 语句成立,执行 print("you are a male.") 。第二个 if 语句不成立,执行 else 里面的 print("what do you mean?") 。这里的第二个 if 和 else 是一对,第一个 if 与其无关。所以第一个 if 成立与否,不影响 else 代码块的执行; else 代码块是由第二个 if 决定的。
修改后的代码:
  1. counts = 5

  2. while counts > 0:
  3.     gender=input("what is your gender?")

  4.     if gender.lower() == "boy":
  5.         print("you are a male.")   
  6.     elif gender.lower() == "girl":
  7.         print("you are a female.")   
  8.     else:
  9.         print("what do you mean?")
  10.         break

  11.     counts=counts-1
复制代码

改动:1.将第二个 if 改为 elif 。 if-elif-else 相当于:
  1. if gender.lower() == "boy":
  2.     print("you are a male.")
  3. else:
  4.     if gender.lower() == "girl":
  5.         print("you are a female.")   
  6.     else:
  7.         print("what do you mean?")
复制代码

2.无论输入 boy 还是 girl , counts 都应该 -1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-14 09:29:07 | 显示全部楼层

回帖奖励 +1 鱼币

悬挂else问题,小甲鱼在课上应该讲了的吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-14 09:35:30 | 显示全部楼层

回帖奖励 +1 鱼币

把girl前面的if改为elif,把counts -= 1已到if循环外面就可以了,代码如下:
counts=5

while counts>0:
    gender=input("what is your gender?")

    if gender.lower()=="boy":
        print("you are a male.")

    elif gender.lower()=="girl":
        print("you are a female.")
        
    else:
        print("what do you mean?")
        break
   
    counts=counts-1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-17 10:10:49 | 显示全部楼层

回帖奖励 +1 鱼币

第二个if已经和最底下的else最成了一对判断语句,当你运行程序,会先判断第一个if,然后会继续执行下一个if -else,所以就出现了你说的问题,正确是把第二个if改成elif
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-17 11:01:05 | 显示全部楼层

回帖奖励 +1 鱼币

上面说把break移到外面的。。。代码不都还是在里面吗??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-17 16:55:20 | 显示全部楼层

回帖奖励 +1 鱼币

主要有三处修改:
1、把接收键盘的输入放到循环外,只接收一次即可!
2、把循环条件放到分支外面,统一处理。
3、修改判断的逻辑,使用嵌套if-else才能达到你的效果。

  1. counts=5
  2. gender=input("what is your gender?")   # 1
  3. while counts>0:
  4.     counts -=1                                     # 2
  5.     if gender.lower()=="boy":
  6.         print("you are a male.")
  7.     else:                                              # 3
  8.        if gender.lower()=="girl":
  9.            print("you are a female.")
  10.           # counts=counts-1
  11.         
  12.        else:
  13.            print("what do you mean?")
  14.            break
  15.    
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-18 21:48:24 | 显示全部楼层

回帖奖励 +1 鱼币


  1. counts=5
  2. gender=input("what is your gender?")   # 1
  3. while counts>0:
  4.     counts -=1                                     # 2
  5.     if gender.lower()=="boy":
  6.         print("you are a male.")
  7.     else:                                              # 3
  8.        if gender.lower()=="girl":
  9.            print("you are a female.")
  10.           # counts=counts-1
  11.         
  12.        else:
  13.            print("what do you mean?")
  14.            break
  15.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-18 21:50:31 | 显示全部楼层

  1. counts=5
  2. gender=input("what is your gender?")   # 1
  3. while counts>0:
  4.     counts -=1                                     # 2
  5.     if gender.lower()=="boy":
  6.         print("you are a male.")
  7.     else:                                              # 3
  8.        if gender.lower()=="girl":
  9.            print("you are a female.")
  10.           # counts=counts-1
  11.         
  12.        else:
  13.            print("what do you mean?")
  14.            break
  15.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-21 14:16:39 | 显示全部楼层

回帖奖励 +1 鱼币


  1. counts=5
  2. gender=input("what is your gender?")   # 1
  3. while counts>0:
  4.     counts -=1                                     # 2
  5.     if gender.lower()=="boy":
  6.         print("you are a male.")
  7.     else:                                              # 3
  8.        if gender.lower()=="girl":
  9.            print("you are a female.")
  10.           # counts=counts-1
  11.         
  12.        else:
  13.            print("what do you mean?")
  14.            break
  15.    
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-10-22 09:39:30 | 显示全部楼层

回帖奖励 +1 鱼币

你们都是大神,这个python,我还不太会,有点尴尬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-16 03:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表