查棒花一世 发表于 2019-11-19 14:35:40

002课复习,到底哪儿错了

我自己按照这个语法编了一个游戏,怎么输都报错,是错在哪儿了呢。 我输 男、女、数字,都报错,报错是int(),看不懂啊

print("welcom")
temp = input("猜猜我是男的还是女的")
guess = int(temp)
if guess == 男:
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")

qinuay 发表于 2019-11-19 14:39:54

int()是整型,男女是字符型,无法把字符型的男女强制转变成整型,所以报错。

jackz007 发表于 2019-11-19 14:48:15

本帖最后由 jackz007 于 2019-11-19 14:56 编辑

guess = int(temp)# 这一句的意思是把字符串变成整型数,例如,把 '7' 变成 7,在本例中,用的正是字符串,所以,这一句完全多余

if guess == 男: # 这一句的意思是,如果 guess 的内容是 '男' ,这个 '男' 是个字符串,必须用引号括起来

print("welcom")
guess = input("猜猜我是男的还是女的"). strip()
if guess == '男':
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")

查棒花一世 发表于 2019-11-19 15:37:41

welcom
猜猜我是男的还是女的男
Traceback (most recent call last):
File "C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py", line 3, in <module>
    if guess == "男":
NameError: name 'guess' is not defined
>>>
================================================ RESTART: C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py ================================================
welcom
猜猜我是男的还是女的"男"
Traceback (most recent call last):
File "C:/Users/wwzhang.LANDHIGHTECH/AppData/Local/Programs/Python/Python38/lianxi/002-2.py", line 3, in <module>
    if guess == "男":
NameError: name 'guess' is not defined

查棒花一世 发表于 2019-11-19 15:38:26

我改了后不管是回复“男”还是回复男,都报错。
代码倒是run出来了,怎么回复总是格式不对呢

雾溟潇湘 发表于 2019-11-19 16:24:30

int -->str

zltzlt 发表于 2019-11-19 19:40:27

不用加 int,而且 “男” 是字符串,要加英文半角引号:

print("welcom")
guess = input("猜猜我是男的还是女的")
if guess == '男':
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")

WXF666 发表于 2019-11-19 21:50:39

太烦了,直接guess == input(),
楼主知道int()执行什么操作不。。人家本来字符串,你给定义整形了,怎么会不报错呢。。
然后男要加“”,不然怎么识别出来
123这种整型不用加引号

974464395 发表于 2019-11-23 00:36:58

...
guess = input()
if guess = "男"
...

1323349692 发表于 2019-11-30 15:54:25

temp是用户输入的数据,那么就是字符串类型了,int(temp),这不是矛盾么,int是整型,int改成String试试

Alexander.li 发表于 2019-12-4 23:19:12

搞明白int()函数是做啥的就清楚了

pythonal 发表于 2019-12-5 10:02:50

int定义后就变为数字了

WilsonWolf2333 发表于 2019-12-25 09:26:53

我运行后报错是 invalid literal for int() with base 10
网上查询得知 “使用 int 对一个字符类型的数据进行强制类型转换时,要求输入的字符类型只能为整数”。
所以原代码 我无论输入男 或者 女,运行到guess = int(temp)时,就相当于把输入的文字进行强制转换成整型。
我个人的理解是 guess = int(x)这个代码只适用于 x 为数字。
修改后的代码如下:
print("welcom")
guess = input("猜猜我是男的还是女的?(请输入男 或者 女,然后按回车)") # 直接把输入内容赋值给变量guess;提示用户如何输入答案来让代码能继续运行
#去掉原int的代码
if guess == '男': #把'男' 加上单引号,表示是字符串
    print("正确")
else:
    print("错误")
print("下次再猜我几岁吧")
页: [1]
查看完整版本: 002课复习,到底哪儿错了