Python:while循环《Python编程:从入门到实践 第2版》 笔记

用户输入和while循环

input()函数

当代码运行到input()函数时,程序会等待在这里,等待用户输入一些文本。当用户输入一些信息后,并按下enter后,程序会继续执行。

name = str(input("input your name,please\n"))
print(f"{name},Hello. This is Python‘s world")
input your name,please
Wu
Wu,Hello. This is Python‘s world

程序执行到input()函数时,输出一句话,请求用户输入。当我们输入信息后,程序继续执行,将上面我们输入的Wu输出,并随着输出一句话。

使用int()来将输入的数据转换类型

input()函数的默认输入类型为str类型,但是有时候,用户输入某一个数字的数据,我们随后对这个数字数据加工,例如加减乘除等操作,但是str类型是做不到这些事情的,所以我们需要进行强制类型转换。这就要使用到int()函数来将数据转换为int类型的。

age = int(input('How old are you?:'))
if age >= 18:
    print("You are an adult!")
else:
    print("You are too young!")

How old are you?:23
You are an adult!

这里,可以看到在int()函数中调用了input()函数,这样实际上将input()函数获取到的数据,传入到int()函数中,再由int()函数进行数据转换。如果不进行数据转换呢?

age = input("How old are you?:")
if age >= 18:
    print("You are an adult!")
else:
    print("You are too young!")

How old are you?:23
Traceback (most recent call last):
  File "E:\PycharmProjects\...py", line 10, in <module>
    if age >= 18:
TypeError: '>=' not supported between instances of 'str' and 'int'

可以看到,我们同样输入23,但程序没有输出我们想要的结果,而是报了一个错误,其原因像上面提到的,因为input()函数输入进入的数据默认为str类型,而str类型无法与int类型进行比较。

age = int(input('How old are you?:'))
if age >= 18:
    print("You are an adult!")
else:
    print("You are too young!")

How old are you?:l23
Traceback (most recent call last):
  File "E:\PycharmProjects\learn\While.py", line 8, in <module>
    age = int(input('How old are you?:'))
ValueError: invalid literal for int() with base 10: 'l23'

同样,通过int()转换我们也可以确保输入的数据是一个数字,而并非什么其他的非法输入。当然一段更好的程序应该是这样的,

try:
    age = int(input('How old are you?:'))
except ValueError:
    print("input valid data!")
else:
    if age >= 18:
        print("You are an adult!")
    else:
        print("You are too young!")

How old are you?:!!!
input valid data!

这里使用了try-except模块进行异常处理。

求模运算符

处理数值时,求模运算符(%)是个很有用的工具。求模运算是将两个数相除,然后返回相除后的余数。

#求模运算 闰年
try:
    year = int(input("input year: "))
except ValueError:
    print("input valid data!")
else:
    if (year % 4 == 0 or year % 400 == 0) and year % 100 != 0:
        print(f"{year} is leap year!")
    else:
        print(f"{year} is not leap year!")

input year: 1900
1900 is not leap year!

闰年的计算规则是,“**四年一闰,百年不闰,四百年再闰”,**这样的话,就要求对输入的数据进行处理,将输入的年份对4求模为0,或者对400求模为0,并且对100求模不为0才能表明这个年份是闰年。用代码来表述就是if语句。同时用try-except来进行确保输入的数据是合法的数据。

while循环

while也可以用来进行循环。whie语句的使用是while 条件:如果条件判断结果为True,则继续执行循环,如果条件判断结果为False,则结束循环。

# while循环
count = 1
sum = 0
try:
    number = int(input("input number: "))
except ValueError:
    print("input valid data!")
else:
    while count <= number:
        sum += count;
        count += 1
    print("sum = ", sum)

input number: 10
sum =  55

这里我使用while循环来计算累加和,而不是使用计算公式。可以看到我输入10后,程序开始循环运行,得到最终55的结果。

使用break退出循环

有时候我们希望提前结束while循环,不再运行循环中的其他代码,这里我们就可以使用break来提前结束循环。 break语句用于控制程序流程, 可用来控制哪些代码行将执行、 哪些代码行不执行, 从而让程序按你的要求执行你要执行的代码。

使用continue来跳过某些代码

在while循环中,有些时候我们并不像结束循环,但是我们希望能够结束当次循环,对于某些代码而不进行执行。这个时候,我们就可以使用continue语句,它不像break语句那样直接跳出所有的循环,但是会结束当前的循环。

无限循环

有时候,我们并没有注意到我们代码中while循环的条件设置的并不合理,这就导致了while循环条件结果一直为True,使得while循环一直进行而无法终结,所以在写好一个while循环后,一定要对while循环进行相应的测试,确保其功能的合理性。当然,在运行的时候,如果发生了while循环一直进行可以用Ctrl+C来强制程序结束。

使用while循环处理列表和字典

“for循环是一种遍历列表的有效方式, 但不应在for循环中修改列表,否则将导致Python难以跟踪其中的元素。 要在遍历列表的同时对其进行修改, 可使用while循环。 通过将while循环同列表和字典结合起来使用, 可收集、 存储并组织大量输入, 供以后查看和显示。”

citieslist = ['Nanjing', 'Hangzhou', 'Shanghai', 'Beijing']
Havebeen = []
city = str(input('What cities have you been to?: '))
while city != 'quit':
    if city in citieslist:
        Havebeen.append(city)
        citieslist.remove(city)
    else:
        Havebeen.append(city)
    city = str(input('What cities have you been to?: '))

print(citieslist)
print(Havebeen)

What cities have you been to?: Nanjing
What cities have you been to?: Qingdao
What cities have you been to?: quit
['Hangzhou', 'Shanghai', 'Beijing']
['Nanjing', 'Qingdao']

通过while,我们可以实现数据在列表之间的移动。

删除列表中的数据

我们也可以通过while循环来删除列表中,一些我们不需要的数据。

citieslist = ['Nanjing', 'Hangzhou', 'Shanghai', 'Beijing', 'Nanjing', 'Yangzhou', 'Nanjing']
while 'Nanjing' in citieslist:
    citieslist.remove('Nanjing')
print(citieslist)

['Hangzhou', 'Shanghai', 'Beijing', 'Yangzhou']

这里,以 ‘Nanjing’ in citieslist作为一个条件语句,正如之前所提到过的,in 会返回True/False的结果,如果返回True就会执行while循环中的语句,来删除citieslist中的‘Nanjing’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SUNX-T

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值