《Python编程:从入门到实践》笔记(五)—— 用户输入和while循环

第七章 用户输入和while循环

本章引言:

  • 在程序中使用 input( ) 来让用户提供信息; 处理文本和数字输入,以及如何使用 while
  • 循环让程序按用户的要求不断地运行;
  • 多种控制 while 循环流程的方式:设置活动标志、使用 break 语句以及使用 continue 语句;
  • 使用 while 循环在列表之间移动元素,以及如何从列表中删除所有包含特定值的元素;
  • 结合使用 while 循环和字典。

1. 用户输入 input( )函数

  • 函数 input( ) 让程序暂停运行,等待用户输入一些文本。获取用户输入后, Python将其存储在一个变量中,以方便你使用。
    message = input("Tell me something") 
    print(message)
    
    ⚠️注意,Sublime Text 不能运行提示用户输入的程序。你可以使用Sublime Text 来编写提示用户输入的程序,但必须从终端运行它们。   
    
  • 使用函数input( ) 时,Python默认将用户输入解读为字符串。当需要数值输入时,可以使用函数int( ) 将数字的字符串表示转换为数值表示,但是int( )只能转换整数,当涉及到小数的时候可以使用float( )。

2. 求模运算

求模运算符( % ):将两个数相除并返回余数。

    ❗️大家可能会比较困惑求模运算和求余运算。
    通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用 % 表示取模或者求余运算。
    在这里要提醒大家要十分注意当前环境下 % 运算符的具体意义,因为在有负数存在的情况下,两者的结果是不一样的。
	对于整型数a,b来说,取模运算或者求余运算的方法都是: 
        1.求整数商: c = a/b; 
        2.计算模或者余数: r = a - c*b.
  	**求模运算和求余运算在第一步不同**: 
  		求余运算在取c的值时,向 0 方向舍入(fix()函数);注:fix()函数是MATLAB中的一种取整函数、截断函数,直接截取数字的整数部分。
  		而取模运算在计算c的值时,向无穷小方向舍入(floor()函数)。注:对于正数,floor 的行为与 fix 相同。
        fix(2.5)==2
        floor(2.5)==2
        floor(-2.5)==-3
    因此,当a和b符号一致时,求模运算和求余运算所得的c的值一致,因此结果一致。但是当符号不一致的时候,结果不一样。
    具体来说,求模运算结果的符号和b一致,求余运算结果的符号和a一致。
  	在C语言中,% 符号表示的是求余运算,在Python脚本中,%表示的是取模。
        例:python中,%表示取模运算,5%(-2)==-1
        	5/(-2)在取模运算中采用floor函数,结果为c==-3,r = 5-(-3)*(-2)==-1

3. while循环

while 循环不断地运行,直到指定的条件不满足为止。while循环通常可以用于计数。

   current_number = 1
   while current_number <= 3: 
   	print(current_number) 
   	current_number +=1
   
   >>output
   	1
   	2
   	3

使用标志

在要求很多条件都满足才继续运行的程序中,可定义一个变量,用于判断整个程序是否处于活动状态。这个变量被称为标志。通常设置一个变量为True或False作为标志。

使用 break 退出循环。

  • break语句可以立即退出while 循环,不再运行循环中余下的代码,也不管条件测试的结果如何。
  • 在任何python循环中都可以使用break语句,例如 for 循环中。

在循环中使用continue语句

continue 语句可以跳过本次循环,返回到循环开头,并根据条件测试结果决定是否继续执行循环。

避免无限循环

  • 要避免编写无限循环,务必对每个while循环进行测试,确保它按预期那样结束。如果你希望程序在用户输入特定值时结束,可运行程序并输入这样的值;如果在这种情况下程序没有结束,请检查程序处理这个值的方式,确认程序至少有一个这样的地方能让循环条件为 False 或让break 语句得以执行。
  • 如果程序陷入无限循环,可按 Ctrl + C,也可关闭显示程序输出的终端窗口。

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

在遍历列表的同时对其进行修改,可使用 while 循环。通过将while 循环同列表和字典结合起来使用,可收集、存储并组织大量输入,供以后查看和显示。

在列表之间移动元素

   unconfirmed_users = ['alice', 'brian', 'candace'] 
   confirmed_users = [] 
   # 验证每个用户,直到没有未验证用户为止 # 将每个经过验证的列表都移到已验证用户列表中
   while unconfirmed_users:  # 当unconfirmed_users为空时结束循环
       current_user = unconfirmed_users.pop() # pop()函数的使用
       print("Verifying user: " + current_user.title()) 
       confirmed_users.append(current_user)
   
   >>output
   	Verifying user: Candace
   	Verifying user: Brian
   	Verifying user: Alice

删除包含特定值的所有列表元素

remove( )函数可以删除列表中符合条件的第一个元素,要想删除所有符合条件的元素,可以使用while循环。

   pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat'] 
   while 'cat' in pets: 
   pets.remove('cat'

使用用户输入来填充字典

使用while循环提示用户输入任意数量的信息。

   responses = {} 
   polling_active = True # 设置一个标志,指出调查是否继续 
   while polling_active:
   		name = input("\nWhat is your name? ") # 提示输入被调查者的名字和回答
		response = input("Which mountain would you like to climb someday? ") 
		responses[name] = response 	# 将答卷存储在字典中
		repeat = input("Would you like to let another person respond? (yes/ no) ") # 看看是否还有人要参与调查
		if repeat == 'no': 
			polling_active = False # 修改标志
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值