哥白尼 发表于 2020-8-3 14:05:33

刚看到第五讲 好多不明白的意思 求大佬给我讲讲

这个为什么有这么多的空行有的字符串后面为什么要加end=""
为什么这个guess=0这个要在两个print()中间temp是个变量那temp.isdigit()是什么意思

哥白尼 发表于 2020-8-3 14:06:32

import random

times = 3
secret = random.randint(1,10)

print('------------------我爱鱼C工作室------------------')
guess = 0
print("不妨猜一下小甲鱼现在心里想的是哪个数字:", end=" ")

while (guess != secret) and (times > 0):
    temp = input()
   
    if temp.isdigit():
      guess = int(temp)
      if guess == secret:
            print("我草,你是小甲鱼心里的蛔虫吗?!")
            print("哼,猜中了也没有奖励!")
      else:
            if guess > secret:
                print("哥,大了大了~~~")
            else:
                print("嘿,小了,小了~~~")
            if times > 1:
                print("再试一次吧:", end='')
            else:
                print("机会用光咯T_T")
    else:
      print("抱歉,您的输入有误,请输入一个整数:", end='')

    times = times - 1 # 用户每输入一次,可用机会就-1

print("游戏结束,不玩啦^_^")

zltzlt 发表于 2020-8-3 14:06:38

本帖最后由 zltzlt 于 2020-8-3 14:08 编辑

1. 空行是为了保持代码美观,完全可以把空行去掉
2. 不一定,放在两个 print() 之后也可以
3. temp.isdigit() 是判断 temp 是否可以转化为整数,例如 '1'.isdigit() 为 True,而 'a'.isdigit() 为 False
4. 请见:https://fishc.com.cn/thread-159045-1-1.html

Twilight6 发表于 2020-8-3 14:22:52

本帖最后由 Twilight6 于 2020-8-3 14:26 编辑



这个为什么有这么多的空行 ?

你是指代码中的空行吗?为了代码看起来不那么密码麻麻,整体看上去舒服点,仅仅只是为了美观而已哈


有的字符串后面为什么要加end=""?

这个是 print 函数的默认参数 end 而且 end 默认值为'\n' 换行符,即我们没有人为赋值时候 end = '\n' 的

end 参数是在 print 函数内容打印完成后自动追加打印一个end 参数的,这也是 print 函数能自动换行的原因

当你重新对 end 参数赋值为一个 "" 空字符串时候,原先的换行功能就被覆盖为空字符串了


为什么这个guess=0这个要在两个print()中间?

你在上下并不影响 print 函数的哈,没关系的,除非你代码中有用到 guess 参数时候才要注意下顺序问题


temp是个变量那temp.isdigit()是什么意思?

str.isdigit() 是字符串的方法,当字符串为纯数字字符串时候,也就是里面的字符全是数字时候,返回 True ,反之返回 False

这些方法在小甲鱼的第五讲的都有说明哈:

s 为字符串

s.isalnum()所有字符都是数字或者字母,为真返回 True,否则返回 False。

s.isalpha()   所有字符都是字母,为真返回 True,否则返回 False。

s.isdigit()   所有字符都是数字,为真返回 True,否则返回 False。

s.islower()    所有字符都是小写,为真返回 True,否则返回 False。

s.isupper()   所有字符都是大写,为真返回 True,否则返回 False。

s.istitle()      所有单词都是首字母大写,为真返回 True,否则返回 False。

s.isspace()   所有字符都是空白字符,为真返回 True,否则返回 False。
         
例如:
>>> s = 'I LOVE FISHC'
>>> s.isupper()
>>> True

哥白尼 发表于 2020-8-3 16:05:42

Twilight6 发表于 2020-8-3 14:22
你是指代码中的空行吗?为了代码看起来不那么密码麻麻,整体看上去舒服点,仅仅只是为了美观而已哈 ...

把print()放在前面需要加end=" " 那为什么不把input()放在前面接收这样不就不用加上end=" " 了吗。

Twilight6 发表于 2020-8-3 16:07:16

哥白尼 发表于 2020-8-3 16:05
把print()放在前面需要加end=" " 那为什么不把input()放在前面接收这样不就不用加上end=" " 了吗。




对,但是这样就可以直接通过 print 打印来改变input 需要显示的内容了

我们第一次打印的是 循环外的 print 但是后续的打印的是循环内的print ,字符串不同,但是 input 还是原先的

哥白尼 发表于 2020-8-3 16:20:31

zltzlt 发表于 2020-8-3 14:06
1. 空行是为了保持代码美观,完全可以把空行去掉
2. 不一定,放在两个 print() 之后也可以
3. temp.isdig ...

什么情况下 需要用到这个isdigit()这个函数

哥白尼 发表于 2020-8-3 16:23:52

Twilight6 发表于 2020-8-3 14:22
你是指代码中的空行吗?为了代码看起来不那么密码麻麻,整体看上去舒服点,仅仅只是为了美观而已哈 ...

那我们什么情况下才会用到这个isdigit

zltzlt 发表于 2020-8-3 16:29:05

哥白尼 发表于 2020-8-3 16:20
什么情况下 需要用到这个isdigit()这个函数

当需要判断一个字符串是否可以转化成整数就要用到

哥白尼 发表于 2020-8-3 16:39:53

zltzlt 发表于 2020-8-3 16:29
当需要判断一个字符串是否可以转化成整数就要用到

他这个循环下面 temp=input() 再往下为什么没有 Int()这个转换函数

zltzlt 发表于 2020-8-3 16:43:54

哥白尼 发表于 2020-8-3 16:39
他这个循环下面 temp=input() 再往下为什么没有 Int()这个转换函数

guess = int(temp)
页: [1]
查看完整版本: 刚看到第五讲 好多不明白的意思 求大佬给我讲讲