我的错题本——第一周

第一天

1.你觉得下面代码出错的原因是什么?

>>> print(x)
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    print(x)
NameError: name 'x' is not defined

正解:Python 的变量在使用前虽然不需要声明,但仍然需要先对其进行赋值才能创建变量。这里报错的原因是 name 'x' is not defined,x 变量名未定义,言下之意就是访问了一个不存在(未创建)的变量。

2.你觉得下面代码中,print() 函数会打印什么内容?

print("小甲鱼常说:"Good good study, day day up!"")

正解:会报错。来自:
j*<_C2:@f1&pVZOn#"9(kRo
解析:因为字符串总是需要成对编写,而 Python 对于字符串的识别是按“就近匹配”的原则,所以上面代码前后两对双引号里面的内容会被解析为字符串,正解如下:

print('小甲鱼常说:"Good good study, day day up!"')

3. 请编写代码:使用 input() 函数让用户录入姓名,然后将名字保存到变量(name)中,最后使用 print() 函数打印出来

 正解:

>>> name = input("请输入您的名字:")
请输入您的名字:小甲鱼
>>> print("你好", name, sep=",", end="!")
你好,小甲鱼!

Nk"_3v
Y'~gi(p-o}@C&K{v>a^Wf0= 

第二天 

1.请问以下代码有啥问题

>>> input = "I love FishC.com"
>>> print(input)
I love FishC.com

正解:这个时候注意,input在被当作变量名赋值,可是我们需要知道,变量名赋值的时候尽量要避免使用python当中的内置函数 BIF

2. 如果要为一个函数写说明文档,那么你觉得应该使用哪种字符串比较合适?

正解:三引号字符串,也就是长字符串合适

3.不会的时候使用help,如果在 IDLE 的交互模式中使用 help(obj) 函数,可以查看到 obj 对应的说明文档

4.请问是 '123' 大还是 256 大?

正解:无法比较在 Python 中,字符串类型的数据不能直接跟整数类型的数据做比较。

5. '123' + 256

正解:报错,在 Python 中,字符串类型的数据不能直接跟整数类型的数据相加。

6.'123' - '12'

正解:报错,因为目前 Python 的字符串类型只支持加法拼接和乘法复制,不支持减法或者除法。
p3G

7.请将下面的文本拷贝并赋值给变量名(fishc),使其可以如下图的效果打印输出。

    >>> fishc = r"""
      ___                     ___          ___          ___     
     /\  \         ___       /\  \        /\__\        /\  \    
    /::\  \       /\  \     /::\  \      /:/  /       /::\  \   
   /:/\:\  \      \:\  \   /:/\ \  \    /:/__/       /:/\:\  \  
  /::\~\:\  \     /::\__\ _\:\~\ \  \  /::\  \ ___  /:/  \:\  \ 
 /:/\:\ \:\__\ __/:/\/__//\ \:\ \ \__\/:/\:\  /\__\/:/__/ \:\__\
 \/__\:\ \/__//\/:/  /   \:\ \:\ \/__/\/__\:\/:/  /\:\  \  \/__/
      \:\__\  \::/__/     \:\ \:\__\       \::/  /  \:\  \      
       \/__/   \:\__\      \:\/:/  /       /:/  /    \:\  \     
                \/__/       \::/  /       /:/  /      \:\__\    
                             \/__/        \/__/        \/__/
"""

 正解:

>>> fishc = r"""
      ___                     ___          ___          ___     
     /\  \         ___       /\  \        /\__\        /\  \    
    /::\  \       /\  \     /::\  \      /:/  /       /::\  \   
   /:/\:\  \      \:\  \   /:/\ \  \    /:/__/       /:/\:\  \  
  /::\~\:\  \     /::\__\ _\:\~\ \  \  /::\  \ ___  /:/  \:\  \ 
 /:/\:\ \:\__\ __/:/\/__//\ \:\ \ \__\/:/\:\  /\__\/:/__/ \:\__\
 \/__\:\ \/__//\/:/  /   \:\ \:\ \/__/\/__\:\/:/  /\:\  \  \/__/
      \:\__\  \::/__/     \:\ \:\__\       \::/  /  \:\  \      
       \/__/   \:\__\      \:\/:/  /       /:/  /    \:\  \     
                \/__/       \::/  /       /:/  /      \:\__\    
                             \/__/        \/__/        \/__/
"""

8.打印一个九九乘法表。(其实我还没会这个)

for i in range(1, 10):
     for j in range(1, i+1):
         print(i, "x", j, "=", i * j, end=' ')
     print("\n")

第三天

1.请问下面代码返回的 True 还是 False?

>>> 3 <= 5 >= 4

正解:返回Ture

Python 支持将多个比较操作符串联起来,这个表达式将对比 3 <= 5 和 5 >= 4,两者都成立,所以结果自然是 True。

2.下面的代码有一个致命的错误,请你改正

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

思路:既然刚开始就已经说明了,输入的值是一个整数,那么存在用户输入的是小数的情况,那么这个时候,我们就需要利用int函数去将小数化为整数,只有这样,才算正确

有三个方法:

a.

num1 = int(input("请输入第一个整数:"))
num2 = int(input("请输入第二个整数:"))

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

b.

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

if int(num1) < int(num2):
    print("第一个数比第二个数小!")

if int(num1) > int(num2):
    print("第一个数比第二个数大!")

if int(num1) == int(num2):
    print("第一个数和第二个数一样大!")

c.

num1 = input("请输入第一个整数:")
num2 = input("请输入第二个整数:")

num1 = int(num1)
num2 = int(num2)

if num1 < num2:
    print("第一个数比第二个数小!")

if num1 > num2:
    print("第一个数比第二个数大!")

if num1 == num2:
    print("第一个数和第二个数一样大!")

第四天

1. 请问下面代码存在什么问题?

age = input("请输入你的年龄:")

if age <= 18:
    print("你已经成年^o^")
else:
    print("对不起,你还未成年T_T")

正解:第一个问题:input 函数返回的是一个字符串的值,所以这里要先将其转换为整数,才能跟 18 进行对比。 第二个问题:逻辑错误,age <= 18 岁应该打印 "对不起,你还未成年T_T",反之打印 "你已经成年^o^

2.请阅读下面代码,根据你的理解,代码中问号(???)处应该填写什么内容?

x = input("请输入一个数字:")
x = int(x)

if x >= 20:
    print("大于等于20")
else:
    if x <= 10:
        print("小于等于10")
    else:
        print("???")

正解:"大于10且小于20"   这道题涉及到 if 语句的嵌套

3.编写一个成绩评级程序,要求用户输入分数,程序返回对应的评级。

  • 分数 < 60,D
  • 60 <= 分数 < 80,C
  • 80 <= 分数 < 90,B
  • 90 <= 分数 < 100,A
  • 分数 == 100,S 
score = input("请输入你的分数:")
score = int(score)

if score < 60:
    print("D")
    
if 60 <= score < 80:
    print("C")

if 80 <= score < 90:
    print("B")

if 90 <= score < 100:
    print("A")

if score == 100:
    print("S")

 4.修改上一题的代码,让程序可以不断接收输入,直至用户输入小写字母 e 结束程序。

score = input("请输入你的分数:")

while score != 'e':
    score = int(score)

    if score < 60:
        print("D")

    if 60 <= score < 80:
        print("C")

    if 80 <= score < 90:
        print("B")

    if 90 <= score < 100:
        print("A")

    if score == 100:
        print("S")

    score = input("请输入你的分数:")

第五天

 1请自学 random 文档(传送门),并选择一个合适的函数,在 0~99 之间随机抽取一个偶数

>>> import random
>>> random.randrange(0, 100, 2)
96
>>> random.randrange(0, 100, 2)
8
>>> random.randrange(0, 100, 2)
32
>>> random.randrange(0, 100, 2)
14
>>> random.randrange(0, 100, 2)
62

2请自学 random 文档(传送门),编写一个双色球的开奖模拟程序

双色球玩法:“双色球”每注投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1~33 中选择(由于每次抽取后不放回,所以不会出现重复数字);蓝色球号码从 1~16 中选择。

import random

red = random.sample(range(1, 34), 6)
blue = random.randint(1, 16)

print("开奖结果是:", *red)
print("特别号码是:", blue)

暂时没懂最后这个,后面再看! 

第六天

1.请问下面代码存在什么问题?

>>> age = 18
>>> message = "祝小甲鱼" + age + "岁生日快乐^o^"

正解:报错,字符串和整数是不能相加的

如果非要这么做,试试 message = "祝小甲鱼" + str(age) + "岁生日快乐^o^"

2.请问在 Python 中,浮点数 1.0 + 2.0 是否等值于整数 3?

正解:是,虽然在 Python 中,整数和字符串或者浮点数和字符串是不能进行比较的,但整数和浮点数却可以。另外,当浮点数相加的结果等于整数时,偏差则不会出现,比如 0.1 + 0.2 会出现偏差,这个我们在视频中已经演示过了,但 0.1 + 0.2 + 0.7 却能得到整数答案 1.0。

3. 硬币实验清单

import random

counts = int(input("请输入抛硬币的次数:"))
i = 0

print("开始抛硬币实验:")
while i < counts:
    # 生成1到10的一个随机数
    num = random.randint(1, 10)

    # 如果随机数可以被2整除,则代表正面,否则代表反面
    # num是随机的,所以正面和反面的概率也是随机的
    if num % 2:
        print("正面", end=" ")
    else:
        print("反面", end=" ")

    i += 1

条件分支当中最后的end=" ",不知道是干啥的

而且这个我复制之后也是无效语法。

4. (x // y) * y + (x % y) 的结果是什么

正解:X,地板除的结果乘以除数 + 余数 = 被除数。

5.如果给 int() 函数传入一个浮点数参数,那么 int() 是简单暴力地将小数部分裁掉(比如 int(9.99) 的结果等于 9)……可是我们更习惯的是使用“四舍五入”的方式来取整。如果不借助其它函数,你能够单纯使用 int() 函数来实现吗

正解:"只需要将 int() 函数的参数 +0.5 即可实现四舍五入

  • 四舍五入结果为 5,那么 int(5.4+0.5) 相当于 int(5.9) 结果为 5;
  • 四舍五入结果为 6,那么 int(5.5+0.5) 相当于 int(6.0) 结果为 6。

6. 舍罕王的失算

i = 0
s = 0

while i <=64
  wheats = pow(2,i-1)
  s = s+wheats
  i = i+1
print("舍罕王应该给达依尔",s,"粒麦子!")

pow(x,y):这个是表示x的y次幂。

pow(x,y,z):这个是表示x的y次幂后除以z的余数 

第七天

1. 在 Python 中,所有的对象都可以进行真值检测

2.在 Python 中,True 和 False 两个关键字是完全等值于 1 和 0 的,对吗?

正解:其实布尔类型其实就是特殊的整数类型,True 和 False 就是 1 和 0 的别称,但作为条件,使用 True 和 False 显然比 1 和 0 要更好理解

 3.写一个程序,判断给定年份是否为闰年

科普:

闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。
闰年分为普通闰年和世纪闰年。
公历年份是 4 的倍数的,且不是 100 的倍数,为普通闰年(如 2020 年就是闰年);
公历年份是整百数的,必须是 400 的倍数才是世纪闰年(如 2020 年不是世纪闰年,2000 年是世纪闰年)

year = input("请输入一个年份:")
while not year.isdigit():
    year = input("抱歉,您的输入有误,请输入一个整数:")
year = int(year)
if year % 400==0:
    print(year ,"是闰年")
else:
    if year%4==0 and year%100!=0:
        print(year, "是闰年")
    else:
        print(year,"不是闰年")

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值